0c1f300d-d098-42f4-b730-8790940cd5b2 iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAAARnQU1BAACx jwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAACeESURBVHhe7d33d931nefx/Al7zp4z88vsmT27 M5lJwkwSIGCqQwIkhBIIZYeTwjIQkoUlS0soiWnBNBvb2Ma9gi0XWbLcJEtW79JV771bvVi9+7Wf z/dKzrW4NrYByfB5Ps95RNLVbVJsvd/fe6/MN4iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiOiy6/nrr78+dM26zaEfrdsSuuajzQAA4Cto3cbtoW+/837o3//d34XO zPhzd80110RFJWappKlfRQ29KqzvAQAAX0FFDX0qaxnQ6vVbNTPmz91H5si/rGVQifm1AABgRlJB 3SVZqMsmzdzvlOIm5ZY3ffYCsGHjttBysy0kF9YrxUgtajgn+/kU+xYAgK8rM+vSihuUmFerOF+V 4nOqL0icr9pcpkbpJY3eML6Yy8abyybk1pjbbVSyGeYXddkZs7M6raRJ2SX1n70ArNuwxVsA7Bd9 ZtgX1pq3ZtiXdCm5tFeppT1KNXfqzOcBAPiaSjcDNDa7UgdjcnQkIV+H4y/MESMiNkeRqSU6FJt7 5rL27bHkYh1JLDyLd1rA9UecMJdNKTlzXbNvjyUV6ajhvbWXC3j/zGXN7R1LLvLue3pp84UvABUn B70Bb7eGlNwypeZXKTm7WFlRbyr78JNKifiTkjN95vMt5sqbvSu3W8qF8i5jrvus00pblFFmBFxX 4Hn+dhtN5nwnzzofAABflsyyZm8Qx6SbeVjcYI7I6y+IPZCOy6pQaFSWuWypmZmN3qMJCXk12hMR p7CjiTock+YJO5qgvYfivUcM7HmSCxuUaI7iDxzPVqRZDOwjEPaRgKT8OoVFpWr3geMKjzHXm1mh 3WEx2ncoTjEZZeayDd55ksz1HIrL82anna2+C1oANm4JrWwd8oa/vWBqXrk54m9WQkae6uOf0FjV s6o8/GPFxp1QRkWnknIrFO+rPHMjmeV2OPsHucc7rdV7a8+TVdGmlPxK76GUrIpWpZtvrv1colkw jsVnmG9SsTl/m/mGNynRV640c11Z5joTsu033tynolpFJaQrOs1sNqUn/dc9ezuGXQ7safZ+ZJr3 ve0HAIBLlFXeouNpZYrNqFBakX1Ivl6phfYgtcU7EE4rnuEdFLcoxQ5/ex5z3gRflcJichRrBnW6 mWH2IPZwQqESkzPV0dGh4qIST2dHp+IT083nCsx5ms0gbzRDvFbhJ3LNbZvlwVwupaBBMVmVCj14 XOOjozoQEa0N20I1ODCg5OR0bT9g5rKZmd4CYpYA+6hChlle7Dz0lTZc6AIw7F8AanuUdvCgMu5Y pKg3l6g66VGp7GpV7P0HRZ1IUHZ1j+LScnQsKU/ZZpgnZhUpOrXQ3Okqb/tINm/js0vMwM5UXHal 0gqqFJXkU3RyliKiEnUis1QZZtin5JXqyIl0s7WYzaegVvGZhYpJLVCcWQBS8qt13HxTwiMTlVrS qrS8Mh0+kaIU+w3Kq1BkQobic8zt+YrNZQoVm55vbiNb0Sm5ZkkoVLpdCsyCEOz/VAAAPsuZBSDT HOya2WMHdEJOjTliT9D+Q4kKPZLk2WeO4MOi0s2SYA6ei+ywNwe35ijeLgBxZnBnmoPWDLMgHDVH 9L7cIkVGJ2rt9oP6aEeEomNTlJmV5y0AGeZ83hJghnj4iTxFp5eay7Z4C4Ud8CHmNhOSMjRmloDh oSGVlVdr1YZd3usE7CPs9nyphQ3eUwL+BaDtwheAmo5R76g7p3lIJ7ZvU9R//y868swzOnbkdR3b +Qsd2forJaZmKqemV4mZ+ebOlSi/ptN7/2BknDmSTzdH7BXm40Iz2JPNwDcbTHyajsSmKdncsaTM PEUl+hRlzpda1qak9BxFZ5Qrs7DSG97H4lLN4lBuhniWWR6ylZRbaU5LU3p5uzKLqhURGes9IhAV n2G2pFpFJ2bpqLkde5mo+FTFmAUj0lzueGKmub0m+cxykm2+HgAALlZuVbs5YK0wB7JV3nDOrmg3 Q92nhIRk9XV3q6OtzdPT1al9YccU66s1g9gefJ5UYm6tDsbmmQWgSpll9hHrk4pMLVVicobCD8co NNqnAzG5OhwZrzgzv+xykGHO5z2SkF+viLh8xaSb+WgOZr2nI8pbFR6TrV17Dqrb3F5vT7dizAH5 mq2h3iPs9pEC+2i5fe2CfU2Br7JNOVUdyruQ3wJYt3FbaH33uHKq21XQ3K/E43HaeM9d2v/u21oR N6DHdk4o5ESNcguKlF/fqxRfgY6ZYZtZVKVjsebOmy0mKilLsal26GcoMilTqQU1OpFoFwD/UX5S Vr75plQqNjlTKeaoPresznuUIDXfDH0ztI+n5JgtqdFcR7ZizEKQkF1irjdV2dVdyi6pVnRqvgrr uxRtlorEvHLvtqKTs/2XSctVSl6ZEs0yEJ+eZ66/xSwnHco1Xw8AABeroK5L8fZV+DMLgGVf4b/l k4PavGP/GZu27dXGnWFKsUf/AQvA4fgC77JZ9ilqc1qUWQCOHI1RUWGhoqPjPMVFRTp05Lj34j5v UZhZAOzTBScyKswi4l8ekgoatGNXuFqbG7QrJEwr12xVS3OjwsOPaH9kuhn47d6jAPapiqgUc3Be 22nuf7cKqloubAFo6pvyvuCC+h4zcGvMtmO2GV+2Pvg4Q08uy9OeiCTl5BeoqLFPeeZKk7KLlGaO xDPM0XlKXpVZHtqUnl/hDf5ss3XkVrXJV96snIpmJflKzDegceY087a601xPr3xl9UrMKjRfoD1i b1ZeTbt52+Jdf7Kv2HwxdeY+9Zhh3maus1mFDea2K5vNoC/ynn6w151n/o+yl82tOmk+Pul/v6ZT hfZrAQDgEhSbGWUHeWKOnYft3uvL7Fv7OrR4c3pCXt2MWu+he+91aGaI2/PY1wLY5+LtZX2VHcoq t0fpzdoeckTbd4Xpk70R+tiw73+0Za/3/L29nP98TTqaWOQtD3aW2eGebYSEx2j9lhDtOBDj/YbB ZrN0bNi6V8fTis3s7DaXb/OWjei0MhU19Ki4qU9F1a2fvQDYfwfg5IC8L7i46ZTyq80wNUfdOeYo vaC8RiWV1covqzXDt8Wcp08l5jxlJwdV2tyv0pZ+lRkl5sZKWwa8j0uaT3kf+9+a89rTA0+zt2PY 9/3X4z/f7HX/7TL9/vtkTzfnKW7s8X/O3FnvurzzBr6deX/m+gEAuBR2rtkX4MVlVirbDPZMc3Ru ZZkFwH4cyDvKn/m8/TjRV2OOxEsVn1VlDnrbzpyeUXJScdnV3u/7W/bpBXvEb6/Tu25zPSlmqThu Lmtfe+CzS4V9Ubz9vJGcV28OctuUa5YK+7oEe//s9frvV4vS7AsG0yvMHJ6Zk7XtF7YAtA1JZWbg egO02Qzlk0PmSgz7dlbLoPm8PQ9wtmIsILMcwz2N+FKZv1uF9fZRgHol5Jgj/hxztH9Bar3LFNT1 miP7RjPo/3bZxFz7q3oNZ0k0Qz3wsvb8+fbF+MUt5v2agM/Zy8+e195G4Mf+0+Ky/Y842APoyrYR ldV3XtgC0D4s7wi+qWtIbd39au26NPayC2vg660nyGkz2nsGF07vwuroHXJWZ99CG14wXadG3NW/ sLr7RxfOwPzoGRjTqeGJS9IzOKY++/7IZNDPn5M5f+/5LmtPO4d++3Z4XDVtg6psv8gFoKR5QJ2n hjU0cEoD/ZdmcKB/QQ0NDnypxkZHFsT4mP3Vj8Gg92mW/fxCGRkeWlCjI8POCvbnZT5NjI8umMmJ cWdNTU4sqOmpyQVzenrKWeZ/zk/TauwcUsXFPgJgF4AOs1XbQX7q1Fz9Ghuf8P7CDw0Neew/RDD3 fP39/ecwoNHRUXPdwT73xRgeHvHu04i5naFBM5jMx/Y2h8yAGjCnBxoZMec1Q3Pu6eczPDysiooK FRYWqri4WCUlJUbpzNuSgNPO/ti+DXQh5w38nFVQUOB9f+33Pdh9swbN17xQZv9MLBT7/42r7J/l hWT/ji2UsbExZ42Pjy+oiYmJBTM5Oemsqamp87JLQsMXugDYAdvXI196ktJ9+Wqob1RDY4NOtrWZ H0Cj5g/DmBnA518ABgf6VF1do74BOyzMUYs5orWDesQexYyaP9BmsRgwnxszf7DsUU2/eX/cLhzm B0y/GW52+bBHev3nuI3B/j7VNdRrwAyDlqYG9fYPqr2tSVWVVWrv7vO+cd5tDA6Z7XVSbW0t6ukb 0IR53zu6Nj9IvUFibtu+tffN/kELXBLs6fn5+d4PPfsXwP4lPPMD2Jx/7l+Qz8v+gLNNT0+rtLRU 7e3t3u0FDv1AwQbzfJkdxAtldhi6KHAYL4S5Q3k+zR2KLgn2M2M+zR3K82nuUHRJsKEf6AtfAAaG RtVak6v3l7+jgrIaM4zKdSJynyJiEzXU1ylfbqEZ7OcezkOjE+qoy9PvHntCBfVdGuhuUWF+kRnO 5Sovq1JZcYFKKuvN5btVkJOlsppGjQz1KTM9RUWVdeaHzLCKC3JU19xhftgPBrmNAU1PDGn7urUq qWvSK0//p2LzyhS2e4uikzLV0NSkMnP50qpGswQMqNiXrPfXrVN95ykV56SpsKJWHZ3t6u7pVlur /21TY718vlx19dqnFfyPINhBY4/O7UC2nZ6aUHN9jQpLytRvvkeBnT49885ZnVZHR7v33nB/j/oG R7z3P53/wl2dnYqJiVFRUZH3yEOn+djeh7mDf1awwTxfAofxQgg2GF0RbCjPp2CDeb4EG4yuCDaU 51OwwTxfgg1GVwQb+oG+lAWgvTZfr7/2srLyKhUZeUCHDh/Q4SNh2rhquZ575lmFxWZ7z0t9ejj3 m4E5qeiDe/XRRx/pSFya4g9u0aZtIVr93muKTS1Q7KGP9cwrbyl0/8da9vZSbdy8XaH79mn3x9v1 5spVijgQqr+89CctWbpSHYPjGhr49G1MTE0rJfqgtu3crfeWvqYdO3cqZO9BRcUdU3joTi1/+y2Z r1Ohe/cr5JMdemPFch0KP6ydu3brE3PeNR9tMh+HaOnSZTp+/KiWLnlda7fsU1e/GS4zTyHYQWMX APtNnm1koNcsGM3q7u72Pt/a0qy6ulrV1NarzywmXW0tqqis0qnhMXPu06qtqVRXX58a66rV0d2n jpZGVZvzdnS0mcs1qrenSzWVFTrZbpaQ5mY9+OCDWr9+vcrLy9XV1eX9wJ87+GcFG8zzJXAYL4S5 Q9ElwYbyfAo2mOdLsMHoimBDeT4FG8zzJdhgdMXcgT/Xl7AAjKmlMlsfrF6pru4BM0S3aH/4fn28 eZVe/OMSHYk+rrySKu+H0dzBPDA4rKGeRi154Rlt3bZVL7+21AznzcorLlFoyDaVlZZoy5q1eu2v S7Vi3WplZGfr8NZ1evb5papuaDFDfLPe+PMSrdy0W/EJieoxA3kgyAIwNDKugZPleuyRXynRV6gl Tz+u8IRCxR7fp493blRKRoYiP96sZ597S5X1zfrkk4+09I1lyqhsUeaxCLMU7NKrf3lVHy57S28s W6fivHQtf2+5SurbNTbiH7p20Njn4wMbGzqllrYOc0Tfq/IKM9Tb29XU2mFm/YSqykpUXF6pFrMU nDLfQ5t/8Jvh3lDvKSuvUGtrqxobGtTbN6CGmgrVNTarvaNbRSVlSktNVWZmpmd2yZg7+GcFG8zz JXAYL4S5Q9ElwYbyfAo2mOdLsMHoimBDeT4FG8zzJdhgdEWwoR/oC18A+geG1N5YqQQzjCYnp5SZ nqD0jBTlFhYqJSpc23btU8PJLu+V6J8ezKNqKM/V0ZgkbwCmxh/Tnv0HvOfrM9MS1Vhbo93bt2h7 SJjiEuPMQCxTVlKy4uNOaP3Kd/X8X99TcUmptm/eoITMQu8H3tzbsAYHh1RXVaRXXnhesek+vf+X lxQWnay87ESlmdspKS1VdnKqkpMStHn9am3cG66q8lJt3fChQg4eV09Xq/btDVV2TrqOHU9QsS9J m7Z/rMa2Hu+1B3bA2tvOzc31Horv6enxtDTUKr+4TD0dzcrKzPCGfV5msny5ed5wL8j1eU8RtHd0 mfOboV5UZJaYfvN1V3pH9Xk52SoprzJH/WWqrmtSTXmxss1lG5pOKisrSydOnFBCQoISExO9BcDe h7mDf1awwTxfgg3l+TQ7DF0UbCjPp2CDeb4EG4yuCDaU51OwwTxfgg1GVwQb+oG++BcBnurzXpRn /7L39fWZHzojZ3742L+E/ufI+/3LwpzBbF8caF94Z1/0Zz9vX/A3bv7w2qExYpYD+8PbXof9A2X/ K0f2Y/vCvJaaQu3avlnRST6NT0/PfC7Y8/9+9nKJZnGIjYvT0SOHFXMiVlGRx8xR9SnvD8yIva/m difM7dj7MGlO8/9FMj9IzFv7tUxOTXqnTUyMe9c3NjYu+19dsi9CtAPWntbY2OgNbvuc/KyysnLv 9QytzbXmc2VqqMhXQWGRqqqrVV5aoty8fHO6/7yzl7Xnq6yqUllpsfLyC7zTy83pVVWVys/LNUtP mWpqalRXV6fa2lpzetWZIR849AMFDuT5Zr83C2n2z6OL5g7k+RY4kOdb4EB0zdyBPN/mDuX5FGww uiLY0A/0uRaAzlMj3ov57KC/UHawB77/KTND2r4/O7Bn3w887dOn218d9N+fwOs4F/uH0r5AL5Ad TvZywQbmxbLXE+wHnl1O7G8BzP7a4cio/zcEvM97f1Fn3g9m5i9z4Gn267DXGXiaNXsf5t6vWXOH 8nwKNpTnU7DB6Iq5A3m+zf1zOp8CB6JrAofxQgg2mOdLsMHoimBDP5CtsWv44heAUrMANHeYI/yh 8x9pns9ZQ8Ec+U+Pn5bGpdOXQBOf/nhydPKs25gr2HBwRbDh4Ipgg8kVwQajK4INRlcEG8rzKdhg xpcv2FIwyy4AXZ0dqmjqUVX72EU+AtA0oLaeQU1N+v/PtVcW7EYuhL2svY6ikwXKacxWbpPvc8tu yFR1Z+Xnul8AAHwd2Ue929palV/ZYmblxMUvAH1DE+pob/OO5j/PoNW0NDgyqLu33KarVnxb163+ nvF9Lfrwe7pqpbHC//ZK8/Zq8/Y6c7r/POd2xfv/U88fetp7iCPYbQIA4Cp70D09PaX6DvsagNGL XwB6Bse9hxDsw+n2CoM99HMhTk+e1sDwgO7fcaeuX3OlfrhukRZ/tEi3rr9Ov951ox7acYPu336D HjRv79lyvX6w6lrdvHaRbjHns+cN5uoV39GLR5/zFoBgtwkAgMvsi9jr2gcvbQHoHhhTZ3ub92Iz u00Ee+7pQkxNTKl/qF8P7LhLN6y5ygz26/TDj67zloCNSbdqeOA+jfTfp8Hee9Xdc69Wxd2qa1Yt MsvCIv3InNeef64frLxCL80sAMFuEwAAt42aBcD+54AvZQHoH1VnR7u3ANhtIvgNfLbZBeD+gAXA WmyWgGs/XKQ3In+kQbMAaPIBM83vlyYe0PGiO/STDf5HAwIH/yxvAThiFoDTLAAAAHzaF7AA2NcA fBkLwKxFqxfpib03q671HmnKLAHDv/De1pqPH99zs76/4lpvWQi8DAsAAADnYxaAtktdAOxTAB3+ pwC+jAXghjWLvOf+a5vvUXX7zxXu+4kOGPYRAI3aRwLu19jgL/RB7I+9pwTs+WefEmABAADgfD7n AmB/C+CLXgD8z/9fp2vNkf9DO2/U6SFzxK8HdaLoDn3z3R9ouRn4Y/Y0+3SAtwg8oKjCO3T7zFMC dglgAQAA4Hw+zwLwJT0FYBcAyz70/6BZAEZP3SdNP6D44ju8h/u/98G1enL/zWpq/7k0YhaAmacE qk/eo0dDbvJeN3ANCwAAAOdxmS0AV674vjYl36ZyM8xL6u/Su9E/Um+XGfRmATic9xPv4/KWe5RV eaea7WsChs0CYB8NsCYe0KBZFn6z6yb92/LvsAAAAHBOl9lTAP/+wfcVY470pYe8V/3bZaCz078A hOf8RCFZt5/5nPfw/+zwtwaN0w96l/nmu99mAQAA4JwusxcBftcsAIfzf6rT5mjePve/LvFWdc0s AAfNArAt7TZv+I/13+d/aiBwAZh5TcAfwhbrO8t4BAAAgHO7zJ4CuG71VfrFthv069036X/tvFGP hNyk4T7/awDsiwDtvw54r/n8b/fcrJKGu//2KIBZCnp779OLET/0XgPAiwABADify/BFgDeuXWQW gUW6cuW15rS/vQgw1iwA/7j0B95z/OVNZvjbI/6ZFwAW19/tLQz2MvwaIAAAn+Uyew1A4L8DYP+p X/trgN4CYIZ8dOEdeu3oLRq3z/WP+x/ut/8WwMHcn3q/NXCNOfLn3wEAAOBCXIaPAARdAMywH7FP Bdhf+7ODf/wBjZpFwP5WwNXmqP/GOf9dABYAAADO5zJfAOzD+vYFf2d+33/E/3x/U9vP9du9wf8Z YIsFAACA8/mcTwF82f8U8L1bb/Af+Zsjfu/If+oBJZX/TD/bdL2uXmX/k8CfHv4WCwAAAOdzGb8G 4IfG9asXKSTzdo2N3O+9yn9j8m3eCwStc/2ngC0WAAAAzucyfgrAsg/v37R2kX75yY3eowH2P/pz c5CH/OdiAQAA4HwukwXg1NAp3b5xsa5Y9k+6asW3z/J944pl39K/Lf+WrpzzuXP55jv/oD+E/54F AACAoC6DpwAmxic0PDKsYyVHdKBgvw4Vhym8INSv8DzM5w8WhSmi6MCZ80eYy0YUHtC+vBCl1iRr cmIy6G0CAOC2L/RFgKMaM8PcNj05rtHRYDcY3PjYuHe5L63pSXN/zP0LctsAALjnC3wKYHxiShMD 7Vq/Zo2q2vo1NTU5M31Np097b6anpry3gU1P+ZcGW0nsLv3y96/OfDStUXMnp8177bWFWvKn/6dn n3lO2RWt/k+bDqxfqrfWhc58JL3+h0e1I8pnbu60elsqzWWe13PPPafU4saZc5i7Eni/gnTa3J+L WV4AAPjq+QIXADP/NdldqauvuEJxZT1mlE5o37ZVWrr0A1XW1yssZI9q6mt1YH+YkuKi9cGy9/X6 m++quW9UxSlH9eJLr2jdsld11ZU36c2l7ymjpMEsEdMa6qjUj6/5rpas3KGY45GqrKtTyOZVeufD jVq97C1tDotXe02e3nj1FV11xb9q7cEMb5BXpezXv357kQ7GxKilrUth21brhReXqLGrX7HhO/Tm O8sUHhGudatXmPv4rvbs2WXuz1uqMcvL5CRPHQAAvs6+wNcAeAtAT7V+fNNNymoa8xaAbctf0j/+ /X/V7//0qh686xdKy07XA/c+pD89/ZgW3/FLPXznLXrqhT/rZz++XSHHonVo83u64ca79ORv7tW9 v33DG+RFxzboWzffp47WGv3m4Ye0c+8BLb7iv+nVzYf07gv/W0+9/LYef+hnWrZ+h35241VadyjL u1xjbqT+5X98U0/84c/a9MHr+tFdD2vVm8/qkade0K9+eq0efm65wjYs0XcX3aonHv6pFt//iB6+ a7FeXnfIu3zwbxgAAF8Hn/s1AO1nLQBTvdW6+tv/rE2H0uWL2a1FV1+j2394vX75u2f10F136u33 3tLim+7UC0//p55+c6s2vP6U7v/lo7pl8a2Kz8lX2Noluu0/XtCxne/p5vue9AZxb12WvvvP/6Jt YZF6/J5b9H9f+qvuvHWxSgekDa88okf+8LLuv22xth44qlv+/Z+0fH+ad7nyxD26+rq71TcwpONb /6qb7n1cIWtf032//q3+4+7b9Ul6s7JD39Hdj76i/etf0W9eXql1f31Kv1+63bt88G8YAABfB6Oq vaQFoHlAXf2jamttUV9fn3dlo+MTmhzq0rt/eUa/+93vtXXXHr3/zht69bXXdSAqRZH71uuZZ5/V +6u2KiJ0l0IOJSjmwE5FxPkUs3+THn3sdwrZ/Yk27TyonKRj+nDLfu+hePvqgaKUQ3ri0cf1f576 o3yFxVq7crlqe0aVEL5dIZGpyosP15NPPq0/vviykgpqvcu1lGVp+aotGjHXMDl8Sh8ufUmP/fZJ ldaf1K4NK5VcelLV2VFatzNM6bFh2h4WrdjDu7UvOsO7/MjICAAAXzv2RfGDg2b4N/eosn3s4heA jr5hDZkrGB4e9gwNDWloeMQ7evbyv+7P3+mzX/znvSbQnDZl3p6e/tvn/Bc5rYkp+9I/+a/TCLyq 2RcXjo0Me5eXufx0wBmmJsa8y4yO+883bN4fHrVPSfibmvS/6HByfFRjE/Z2zILgvyMz1zfpXX72 6wIA4OvELgF9PT0qqetQVcclLABtPYPeMPV+AwAAAHwlTE1Nqae7S3kVzarunLi4BcA+Z5CcmSdf dpYKCwtVUFAAAAC+Auzczs4y87u61SwA4xe3ANR2T2nfwWNa+tabWrNmjVavXg0AAL4C3n//fcVE H1db/5Qq2kYudgGY1P6ISG3dskkREREKDw8HAABfAXv37lVOjk8n+yYufQHYvGmDwsLCFBoaCgAA vgJ2796t7OwsFgAAAFzCAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAA ABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAA cBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADA QSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAH sQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzE AgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBAL AAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwA AAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAA AOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAA gINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAA DmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4 iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAg FgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINY AAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIB AADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUA AAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAA ABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAA cBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADA QSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAH sQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzE AgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBAL AAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwA AAA4iAUAAAAHsQAAAOAgFgAAABz0uRaAup4phRw4rLVrPtTevXu8KwMAAJe/7du3KyMj/dIWgKqO McWnZCkpMV4+X7a3SQAAgMtfRnq6amuq1dIzdvELQFlzv+o7R9R6atJsEOPeFgEAAC5/rUazGf6V JwdU1T56YQvAxi07Q7vH5V2g0rCbAwAA+Oqxs7y2e0qVzb2fvQCsWLEmsrXP/3ABAAD4aqts7lNJ VfNnLwBERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE REREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQ0j33jG/8f bAQMOaaQxFAAAAAASUVORK5CYII= 8, 17 Font 1446, 790 True formLaunchGridForm CenterScreen Launch Grid Form formLaunchGridForm_Load formLaunchGridForm_MdiChildActivate 0, 30 toolstrip1 1446, 90 1 toolstrip1 0, 0 menustrip1 8, 3, 0, 3 1446, 30 2 menustrip1 Segoe UI, 10.2pt, style=Bold iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAARnQU1BAACx jwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAOzSURBVGhD7ZrrSxRRFMD7t3zkc9d95K6uPaAi pKRPfYiiPhRIQVEIfQlCzZaUypQsLdMsQ/JVkb3M0izSNF8FoZk9DKrTnK1ZtvXMzL1378wO4374 fXL2XH/MuXPmnDtrcivTYDWREnY6KWGnkxJmwXM6HWr73XD5oYebsoa1ZEyrEL7Dm89lwqvJAMCX Ei5+LIbgxO18MqYVJJTSeKfbnnpJMSM6h3zgq0kn45qJlD1c0ZkfuXOUmB4TM0HYftHaFJf20NrZ mAWzc0WkmB7Ln0JQcSuPjGkG0oSRYDgD7o36STEjOp75wKtsESquTKQKI3kK4T43/F6ixfQYnw5C ab25KS5dWGVfSw4sfCwmxfT4rqT4sZvmpbhpwsimukwYmeAvXQg+/bEKUHETQYrwqTsuqLtbQFJ/ vwBaHnlIKSPeTAVg2wW5KS5F+P0H/aczXnO0Iy/yRKb+rsc35TdHbshLccuEEay5U7NB8hojWp94 oUBCilsqjKw7kw69I2Kl6/W7AGw9n/lfPF4sF0awdFV2u+CXQOn6uhCCw+25K2KykhRhld1XsmFe oHQhzcqD0F3Nn+JJFUbW12bA0Hgh+TsjRpWSt0Xp2qi4WiRdGHFVpcGlAbHStTRfDOVt7CluC2GV Q8rexDJExTAChwvuajpuLJrCmGrUi0Qspf/ee1mFsSui4sTS9cJHxmABGxejfa0pjO0eFTSW8ut/ U4lVeHBMbK/ygHdaXY/CccJY6krOZkTXjMdxwohenXakcHWPK7pmPI4UPtmlPRV1pHBZQ1Z0zXgc J9w97I+uR+EoYYyP3Zi6HoWmMA+swkbg1LJ9UGywf+2xl6mZsI0wjnLGpvjnX8uLITjOMde2hTDW TZF36Jm5It0HFEVShTEFRQd8/S/9EAhrv1FpkTRh7GOxn6Wu1wMH/DW97sjUhIprRFKED7bmwmel j6Wu1QMH+3ubs1fE48FSYWz0Gx+IpTAO9HGwH7uuCJYJb1D+2eeCo5wWxpLDgiXC+6+KnTPh4F72 OZMlwiInidNzQVO+B7FEmBcsOYVhOSkcj62EEy05LNhGGPf4ngRLDgu2EB5+WwgbJZQcFqQI49c4 lAgLokcmokgRFjkqwZKDZ8ZUPDORIszbAOAZ8Q6Lv89SkSK8q8l4OqLSN+I3nEqYiRRhBE/oKUGV n0rJqepxmVpyWJAmnK80Bk0DnhWH3CiKZz68jbpZSBNWwUO4A605kQEfHniLNOlmIl3Y7qSEnU5K 2OmsMuE0+AP+4vHGG0OQCQAAAABJRU5ErkJggg== TopCenter None Magenta toolstripbutton1 157, 87 Launch Grid Form ImageAboveText toolstripbutton1_Click windowsToolStripMenuItem 82, 24 &Windows toolstripmenuitem1 44, 24 File openToolStripMenuItem 152, 24 &Open exitToolStripMenuItem 152, 24 &Exit exitToolStripMenuItem_Click toolstripseparator1 149, 6 toolstripmenuitem2 74, 24 Arrange tileToolStripMenuItem 152, 24 Tile tileToolStripMenuItem_Click cascadeToolStripMenuItem 152, 24 Cascade cascadeToolStripMenuItem_Click #---------------------------------------------- #region Application Functions #---------------------------------------------- #endregion Application Functions #---------------------------------------------- # Generated Form Function #---------------------------------------------- function Show-Demo-DGVExport3_psf { #---------------------------------------------- #region Import the Assemblies #---------------------------------------------- [void][reflection.assembly]::Load('System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089') [void][reflection.assembly]::Load('System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089') [void][reflection.assembly]::Load('System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a') #endregion Import Assemblies #---------------------------------------------- #region Generated Form Objects #---------------------------------------------- [System.Windows.Forms.Application]::EnableVisualStyles() $formMDIChild = New-Object 'System.Windows.Forms.Form' $buttonLoadData = New-Object 'System.Windows.Forms.Button' $buttonExportCsv = New-Object 'System.Windows.Forms.Button' $datagridview1 = New-Object 'System.Windows.Forms.DataGridView' $buttonOK = New-Object 'System.Windows.Forms.Button' $savefiledialog1 = New-Object 'System.Windows.Forms.SaveFileDialog' $InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState' #endregion Generated Form Objects #---------------------------------------------- # User Generated Script #---------------------------------------------- $FormEvent_Load = { } $buttonExportCsv_Click = { $savefiledialog1 = New-Object System.Windows.Forms.SaveFileDialog $savefiledialog1.AddExtension = 'csv' if ('Ok' -eq $savefiledialog1.ShowDialog()) { $FilePath = Select-Folder -Description 'Select Billing Invoice ROOT folder' -RootFolder Desktop $datagridview1.SelectedRows | Select-Object -ExpandProperty DataBoundItem | Export-csv "$FilePath\Results.csv" -NoTypeInformation } } $buttonLoadData_Click = { $data = Get-ChildItem c:\windows -File | Select-Object name, length, fullname $this.parent.Controls['datagridview1'].DataSource = ConvertTo-DataTable $data } # --End User Generated Script-- #---------------------------------------------- #region Generated Events #---------------------------------------------- $Form_StateCorrection_Load = { #Correct the initial state of the form to prevent the .Net maximized form issue #$form1.WindowState = $InitialFormWindowState } $Form_Cleanup_FormClosed = { #Remove all event handlers from the controls try { $buttonLoadData.remove_Click($buttonLoadData_Click) $buttonExportCsv.remove_Click($buttonExportCsv_Click) $datagridview1.remove_RowPostPaint($datagridview1_RowPostPaint) $formLaunchGridForm.remove_Load($FormEvent_Load) $formLaunchGridForm.remove_Load($Form_StateCorrection_Load) $formLaunchGridForm.remove_FormClosed($Form_Cleanup_FormClosed) } catch { Out-Null <# Prevent PSScriptAnalyzer warning #> } } #endregion Generated Events #---------------------------------------------- #region Generated Form Code #---------------------------------------------- $formMDIChild.SuspendLayout() $datagridview1.BeginInit() # # form1 # $formMDIChild.Controls.Add($buttonLoadData) $formMDIChild.Controls.Add($buttonExportCsv) $formMDIChild.Controls.Add($datagridview1) $formMDIChild.Controls.Add($buttonOK) $formMDIChild.AcceptButton = $buttonOK $formMDIChild.AutoScaleDimensions = '8, 17' $formMDIChild.AutoScaleMode = 'Font' $formMDIChild.ClientSize = '973, 551' $formMDIChild.Name = 'formMDIChild' $formMDIChild.MinimizeBox = $true $formMDIChild.MaximizeBox = $true $formMDIChild.ControlBox = $true $formMDIChild.KeyPreview = $True $formMDIChild.Margin = '5, 5, 5, 5' $formMDIChild.MaximizeBox = $False $formMDIChild.MinimizeBox = $False $formMDIChild.AutoSize = $false $formMDIChild.Name = 'form1' $formMDIChild.Text = 'Form' $formMDIChild.add_Load($FormEvent_Load) # # buttonLoadData # $buttonLoadData.Location = '857, 54' $buttonLoadData.Margin = '4, 4, 4, 4' $buttonLoadData.Name = 'buttonLoadData' $buttonLoadData.Size = '100, 30' $buttonLoadData.TabIndex = 3 $buttonLoadData.Text = 'Load Data' $buttonLoadData.UseCompatibleTextRendering = $True $buttonLoadData.UseVisualStyleBackColor = $True $buttonLoadData.add_Click($buttonLoadData_Click) # # buttonExportCsv # $buttonExportCsv.Location = '857, 16' $buttonExportCsv.Margin = '4, 4, 4, 4' $buttonExportCsv.Name = 'buttonExportCsv' $buttonExportCsv.Size = '100, 30' $buttonExportCsv.TabIndex = 2 $buttonExportCsv.Text = 'Export Csv' $buttonExportCsv.UseCompatibleTextRendering = $True $buttonExportCsv.UseVisualStyleBackColor = $True $buttonExportCsv.add_Click($buttonExportCsv_Click) # # datagridview1 # $datagridview1.AutoSizeColumnsMode = 'DisplayedCells' $datagridview1.ColumnHeadersHeightSizeMode = 'AutoSize' $datagridview1.Location = '28, 16' $datagridview1.Margin = '4, 4, 4, 4' $datagridview1.Name = 'datagridview1' $System_Windows_Forms_DataGridViewCellStyle_1 = New-Object 'System.Windows.Forms.DataGridViewCellStyle' $System_Windows_Forms_DataGridViewCellStyle_1.Alignment = 'MiddleRight' $System_Windows_Forms_DataGridViewCellStyle_1.BackColor = 'Control' $System_Windows_Forms_DataGridViewCellStyle_1.Font = 'Microsoft Sans Serif, 8.25pt' $System_Windows_Forms_DataGridViewCellStyle_1.ForeColor = 'WindowText' $System_Windows_Forms_DataGridViewCellStyle_1.Format = 'N0' $System_Windows_Forms_DataGridViewCellStyle_1.NullValue = '0' $System_Windows_Forms_DataGridViewCellStyle_1.SelectionBackColor = 'LightSteelBlue' $System_Windows_Forms_DataGridViewCellStyle_1.SelectionForeColor = 'HighlightText' $System_Windows_Forms_DataGridViewCellStyle_1.WrapMode = 'False' $datagridview1.RowHeadersDefaultCellStyle = $System_Windows_Forms_DataGridViewCellStyle_1 $datagridview1.RowHeadersWidthSizeMode = 'AutoSizeToAllHeaders' $datagridview1.RowTemplate.Height = 24 $datagridview1.SelectionMode = 'FullRowSelect' $datagridview1.ShowCellToolTips = $False $datagridview1.Size = '801, 437' $datagridview1.TabIndex = 1 # # buttonOK # $buttonOK.Anchor = 'Bottom, Right' $buttonOK.DialogResult = 'OK' $buttonOK.Location = '857, 505' $buttonOK.Margin = '4, 4, 4, 4' $buttonOK.Name = 'buttonOK' $buttonOK.Size = '100, 30' $buttonOK.TabIndex = 0 $buttonOK.Text = 'OK' $buttonOK.UseCompatibleTextRendering = $True $buttonOK.UseVisualStyleBackColor = $True $buttonOK.add_click({$this.Parent.Close()}) # # savefiledialog1 # $savefiledialog1.DefaultExt = 'xml' $savefiledialog1.Filter = 'CSV Files|*.csv' $datagridview1.EndInit() $formMDIChild.ResumeLayout() #endregion Generated Form Code #---------------------------------------------- #Save the initial state of the form $InitialFormWindowState = $form1.WindowState #Init the OnLoad event to correct the initial state of the form $formMDIChild.add_Load($Form_StateCorrection_Load) #Clean up the control events $formMDIChild.add_FormClosed($Form_Cleanup_FormClosed) #Show the Form $formMDIChild |Add-Member -MemberType ScriptMethod -Name LoadGrid -Value{ $data = Get-ChildItem c:\windows -File | Select-Object name, length, fullname #$data = Import-CSv $ds = D:\scripts\ConvertTo-DataTable.ps1 $data Write-Host $formLaunchGridForm.Name $datagridview1.DataSource = $ds } return $formMDIChild } #End Function $formLaunchGridForm_Load={ $menustrip1.MdiWindowListItem = $null } $childClosed = { # "this" is the child Write-Host $this.Name # we can also reference the main form Write-Host $formLaunchGridForm.Text } $toolstripbutton1_Click={ $childForm = Show-Demo-DGVExport3_psf $childForm.MdiParent = $formLaunchGridForm $childForm.Text = 'Data Grid Child ' + $formLaunchGridForm.MdiChildren.Count $childForm.Name = $childForm.Text -replace ' ' $childForm.add_Closed($childClosed) $childForm.Show() } $tileToolStripMenuItem_Click = { $formLaunchGridForm.LayoutMdi([System.Windows.Forms.MdiLayout]::TileVertical); } $cascadeToolStripMenuItem_Click = { $formLaunchGridForm.LayoutMdi([System.Windows.Forms.MdiLayout]::Cascade); } $exitToolStripMenuItem_Click = { $formLaunchGridForm.Close() } $formLaunchGridForm_MdiChildActivate = { Write-Host Activated $this.ActiveMdiChild.Name } #region Control Helper Functions function ConvertTo-DataTable { <# .SYNOPSIS Converts objects into a DataTable. .DESCRIPTION Converts objects into a DataTable, which are used for DataBinding. .PARAMETER InputObject The input to convert into a DataTable. .PARAMETER Table The DataTable you wish to load the input into. .PARAMETER RetainColumns This switch tells the function to keep the DataTable's existing columns. .PARAMETER FilterWMIProperties This switch removes WMI properties that start with an underline. .EXAMPLE $DataTable = ConvertTo-DataTable -InputObject (Get-Process) #> [OutputType([System.Data.DataTable])] param ( [ValidateNotNull()] $InputObject, [ValidateNotNull()] [System.Data.DataTable]$Table, [switch]$RetainColumns, [switch]$FilterWMIProperties) if ($null -eq $Table) { $Table = New-Object System.Data.DataTable } if ($InputObject -is [System.Data.DataTable]) { $Table = $InputObject } elseif ($InputObject -is [System.Data.DataSet] -and $InputObject.Tables.Count -gt 0) { $Table = $InputObject.Tables[0] } else { if (-not $RetainColumns -or $Table.Columns.Count -eq 0) { #Clear out the Table Contents $Table.Clear() if ($null -eq $InputObject) { return } #Empty Data $object = $null #find the first non null value foreach ($item in $InputObject) { if ($null -ne $item) { $object = $item break } } if ($null -eq $object) { return } #All null then empty #Get all the properties in order to create the columns foreach ($prop in $object.PSObject.Get_Properties()) { if (-not $FilterWMIProperties -or -not $prop.Name.StartsWith('__')) #filter out WMI properties { #Get the type from the Definition string $type = $null if ($null -ne $prop.Value) { try { $type = $prop.Value.GetType() } catch { Out-Null } } if ($null -ne $type) # -and [System.Type]::GetTypeCode($type) -ne 'Object') { [void]$table.Columns.Add($prop.Name, $type) } else #Type info not found { [void]$table.Columns.Add($prop.Name) } } } if ($object -is [System.Data.DataRow]) { foreach ($item in $InputObject) { $Table.Rows.Add($item) } return @( ,$Table) } } else { $Table.Rows.Clear() } foreach ($item in $InputObject) { $row = $table.NewRow() if ($item) { foreach ($prop in $item.PSObject.Get_Properties()) { if ($table.Columns.Contains($prop.Name)) { $row.Item($prop.Name) = $prop.Value } } } [void]$table.Rows.Add($row) } } return @( ,$Table) } #endregion ]]> 256 1 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089