SSIS Script Source Component in a ForEachLoop

  • Hi, this is not a script TASK, it is a script source component.  I have a few hundred XL files to process and import, some rows I need to ignore but the "main details of the XL" I need to import.
    The c# script source component I have written works fine and opens each XL file, extracts the data and passes it onto the output buffer and then into the SQL table. 
    BUT if an error occurs, all the rows from all files are rolled back.  I can see the different data going into the landing table, but once it errors, empty table again.

    I have set the OLEDB destination Rows per Batch = 1 and Maximum insert commit size = 1. 
    I have set the transaction properties of the package, foreach loop and dataflow task to ReadCommitted and Supported.

    Am I missing a "commit" inside the script component to get each files contents committed to the SQL table ?

    Pre-Execute opens the XL with the filename from the foreachloop
    Post-execute closes the connection and releasesconnections, sets end of rowset on the outputbuffer
    CreateNewOutputRows, walks through the OLEDBDataAdapter that is filled with the XL contents and processes each row, assigning values to the output buffer

    data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAApsAAAEBCAYAAAA3h27cAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAETiSURBVHhe7d1fjBvXdT/ww99zHVlOYiAt7NiVSSlrWZs2s0ENGAFcG3JMYpFif80DBT2VRAIYiA0sAQuoH3b3oQ8yQAJWEQEJlnmJsPsQlGkqkI4M1UYDA0qz7C+hbG0kUrIcCU2A1LasuO/8nXPnzsyd4cxwyOVwd7nfjzHWzgznzr3D+XPm3jucTJ/RFNy8/EN6+95f0//9tkWf19NG8zG1f/Iv9P/uEf3l336Hnn9CTwYAAACAPev/6H9TJEHiD+nDB/+aDuspY/n4Nt0mDla/g0ATAAAAYL+YWs0mfdymn7xN9LfBmk2Z/utP6fAHH9AHf/m39B2OJD9u/4T+RaowhZpGdPmHb9MH9gT6W55weOAzHIEmSivwOXM6UzWw9orcGtTQNAAAAABgqL0RbP7Lp/RXHECqEE4Fgg/St93g7yf06V99mywylo/7TNK0/uU2Pf5/+e/PS82rSpise5fphx8+5g8mo9IYry8AAAAAwIEyhWb0BA4/6DWx3/uU7n3wNv3whz9Uw9sf3KNPdaWiK+4zSdM6/Dg9rgLGz9ODeoGPeeZhZ8SRJD8AAAAAEGpvBJtB0lT9ne+4g1nR6EryGZH0c+zzHGjeC4skR0gDAAAAADxTaEb3niK3Haa/Vs3XelSaqQPN62a/SffzZjM6T03yGZEsLa9pPKzPZmgazgoAAAAAINL0+mwCAAAAwIGzN5vRAQAAAGAmINgEAAAAgNQg2AQAAACA1CDYBAAAAIDUINgEAAAAgNTs6WCznCFq6b+DWmWiDM+XoRz2oR7RQtS8WZCkfPozu7oJ9ks+Z0iLDxzf9u7VaGGhJpsZAABg6vZtzWZ+nUh+tKlq6QlwALT4BiTDNxjeMImbCQnOzDQzmfIuBr49qnHkPW65erUFKlCT1vN6gsgu09p8hXKT2FgAAAAjmt1m9CzRFgejvovuLNkv5Zt4PkvU5LsM+XnYfrdKncIC1SZQZVdq6jTVsE77crfp1ehUZZ6aIRs7v96kUn1lItsKAABgFFMJNqU5vFbzmr0X+G+Hr6k8rDmVR8KWizOsid2cL0Oi+h6dt2C6fH2nzIKa7ZL03bxGLCfkc2X+nDnfmT1snjNtoHzm+nJEbT1ZiclLlJ2WL3JdcflMKrtIRatN2zpzqvmYd7QFTnSghlKakt3pCWsOuQD+z9o1qwtOxDYkTX+NqZMXSSOYL3tcaiUzvDEqvDHqBWc5I5getr6zFaLqmYhAOU9nqkSVs4GFAAAAUja1ms3Ktt3s3e/KCAefzgV0iEJj9OXimtglACrwvypNPQytxeJ1LnBAVOQ8OHnpcCKSl+wyUYmDg4tGvhp1ojWeLsq83JqxLlm5WYb6JtGGntcs8bJGLBA1L658sr75pl4f59P8yLC8hIktH0+L2i5i3Hwm1jrLgZlFc1k9zuxtZtdQNkt1vc04wMttc9mdmktecaBG1AvueHD6N3IB+rzh6wU7GGyVC9SpdmlrWVYYn6YEmtKcPUptaXZ5iz/XVdvLq2ndIrW6oWVo8fdiUXHR2BgB2cUiWfWGKgsAAMC0TC3YbHLgofC1sMgXU6c2aphxl4sigVL1jB5JqHeRqM3Bnn3RZ/zvGo87eVnivzf5M0JqAus8rgILnt/hfziO4SDGHnj1PqU1lZwiwZnZAho3LxRHERxv0JmwzyXIS5So8g3bLpHi8jlUncugg8JCh6pdJxizlTgK9rZZ395mvetcdmO5TGHwezCb0be8NGTDd6sdtawEj3agyWLTtAO/6ngFDJegDBy+0zFjWwzIHuNPdOj6Do8hAACAUcxun80pykvwusnxAP9zkf91g1me0OagqqtrEp3BDI6mZgd5iSzfrjD6bLq1fkP0trnsVS67EVAmXVazLN54pgmkOZJprw8AAGBCph9stkj1SVsyKn2cmpbaqZi+eyHLjWOOY4bKWT2SUHaRg4260eTM/67wuNt8y/8W+Z+LnEeOxchtyeS8ShP01LrJ8Xoto8nbtz13kpeI8g3dLlHi8pmG/BKXvTJe2Vtlym0WaWNrg6qdgtdfMzbNLO9n7Zj+kU7tYo/LXgmUPUvH5vkTwerHRGUYUmupakeH1H4CAABMWn8KSrwWsz6t2tUzWLfqTbf4b/lsU8+LW65q+efJUNILxs0TwfnGrGhSnWYsY+ZF0fPN9Sj8OctYjnjdzqLNUsjntbh5ceUzt6dMM7dnXF6G4kTM9bj0dGdI+h3F5jNSkz9XivxckxMZyJ+DV8j3Gbw+PfDO5n0PxnQ16HXwl8BhsVcmnYblTIhJU7ZslTf2QJoyhzeMM92qVgfL5Et3cP1umr712eVw8xZCrTdyAwEAAKQjI//jC1eq5InzJV7LBHuwAUCQPK2uHiIKexhJnoJfoblAH1cAAIC0IdgEmCHy80m57TXqB54mc5+OH/qUGQAAwGThASGAGSI/n9TksNL3G5ytMgJNAADYNVOp2QQAAACAgwk1mwAAAACQGgSbAAAAAJAaBJsAAAAAkJqpBpvyRKx61Z7v6QUAAAAAmFXTe0Ao9jcAAQAAAGAWTa9mU73beU7eVAgAAAAABwT6bAIAAABAaqYbbM4fQ80mAAAAwAEyhWBT3smcoUxjCW8wAQAAADhgphBs5mm936fu3AqeQgcAAAA4YKbWjJ49Nk/UuU49PQ4AAAAAsw8PCAEAAABAahBsAgAAAEBqphdsZufIam+jGR0AAADgAJlisLlMG9UOFfC6SgAAAIADY3qvqwQAAACAAwd9NgEAAAAgNQg2AQAAACA1CDYBAAAAIDUzGWyWM/KSTNgvWvyF+Z4Z69VoYaGGXy4AAACYAajZTJV+L7wxTOJBfAnOzDQzmfIuBtc9qi2MX65ebYEK1CTfa/Ozy7Q2X6EcfrUAAABg30OwmboSNft9kof++90qdQoLVJtAlV2pqdNUwzqZsdq+0avRqco8NX2Rpi2/3qRSfWUi2woAAAB2z+wGmy2iTMYeFmp6GmuVveky+Jtv+bPGPHO54LyxKt2yi1S02rStAyjVfFyrcbohNZTSlOxOT1hzyIXzf9auWV1wIrYhafprTJ28SBrBfNnjUiuZyeSo0iaqF5zljGB62PrOVoiqZyIC5TydqRJVzgYWEgPlBAAAgL1qZoPNQoNIfkG03+URjmmcACi/rqfreZ2ChFO21lmi+aY3f2tZz2DlHNGasxwPxMuNXOvGK6i0LZrL6nFW3yTa4ASlhrJZqlNDZYYDvNw2r8+pueRMBWpEveCOB6d/Ixeu3yzxPDsYbJUL1Kl2uRyywvg0JdCU5uxRakuzy1v8uS5VLbOmdYvU6oaWoUWNukXFRWNjBGQXi2TVG6osAAAAsD/NbLDZ5KBS4VimyMGQU5sokQvHZ/bAAWRbTxbZOQnieHpZT3Dwsh3+h+M7d9m6PSeBuv3WJBkKHap2nWDMVlpbliwq+fW+3Xexd53XZyyXKQysz9eMzlGxmyQHnF39piYJHu1Ak8WmaQd+1TMTbIxPUAYO7emYsS0GZI/xJzp03Q1QNQmqudwhre8AAACwxxy4PptlDiarXV1Dyf9yHOrKLuvpSzqodIJODnba/MGuUbMpgxk0RjP6bLq1fkP0tnl9VV6fEVAmXVazLLNkbAJpjmTa6wMAAIA9afaDzRapPoVLqsbQrqF0SLO5WbPp4s+qQLSuFlfjJf5gWPdB1yT7EeaXeH2V+PVF4XzkNou0sbVB1U7B668Zm2aW5qx2eP9Ixald7FHtVCWwzbJ0bJ4/Eax+TFSGkFpLk6odDan91NvaLRsAAADsWbPbZ9Np8tY1marFlYOWtRIHnzl73sqc1Dt6agt6GRn4M9J/02mpXdf9O935/Fkz1OldN8PYncrz+uTJdacJmofA7076+mw6D/BIECZN9RvSrJ6l5Q15wiang7K4NPmzW10VnA6kycupB3VyMi1Hm8Wqb5uJvP0BvZzTL3NYGfK0xBH85kWzVH69i5vULi3xJwOyc6pGuu32jQAAAIC9KtOX9k2A3SBPq6uHiMIeRpKn4FdoLtDH1Sa/7SmBr/PwEwAAAOxVCDZhV8nPJ+W216gfeNrHfTo+MF19vtImy33KHgAAAPYyBJuw6ySwbCwZT5dLd4DG0kCgCQAAAPsPgk0AAAAASM2B++kjAAAAAJgeBJsAAAAAkBoEmwAAAACQGgSbAAAAAJAaBJsAAAAAkBoEmwAAAACQGgSbAAAAAJAaBJsAAAAAkBoEmwAAAACQGgSbAAAAAJAaBJsAAAAAkBoEmwAAAACQGgSbAAAAAJAaBJsAAAAAkBoEmwAAAACQGgSbAAAAAJAaBJsAAAAAkBoEmwAAAACQGgSbAAAAAJAaBJsT0CpnKJOxh3JLT0yqV6OFkOV2lOZ+EVH2aC0qZ8r8/3Czvs2wn41p5P0sOdl+vnRlXQs16ulRAABAsDkR+fU+9ftdqlp6gsG8mNtDdLBkiktzenpUWwi5SLfKlNmDF9Rpb7Nxv9tx7Yf9rFdbCOTDHhZqCfYWHRS6y/mjuPB9cRdJWQvUpPW8niCyy7Q2X6HcXsooAMAuQ7A5BaWmXNCdYZ3Ma5NcnLZ4uu+CtWdkabFoUb3hv3C2GnWyios8d4f2dNmTif1up2wv7GfZ5S29/iaV+L+mzs/W8pC9RQLN3CYVu0YZJpXZNMrO+T1VmadmSKL5dS57fYWSxNcAAAfBbAabgRoSt5JBauTMcdUs66918dcQGbVDUWnugLmukdJLIS9RsotFsuoNo5asRY26RcVFO3gI1qiZeZF55ZqZV297xpU9Lk1Ff48yJKoxE3HbLDAvcZpRsJ9FGyNNu7Y0R5U2Ub3gLLvgBnPj7Wd2l4yaURPr+96NfSxsfutshah6JuLmIk9nqkSVsyGFG9g3AABm3wwGm3wRyW3TmlM70m8SFfSFKb9O/WaJL1j2xahVLlCn2nVrXeTCJM1ibs2KWzsUk2YC3gWSB6P5ebwmzDHzErjIO8PQi152kYpWndzKzVaD6laRdKypy6CHbpU6ets66ptEG3p+s+SlE1f2+DTrVGgsufOocirB9xC/zSRwmDdqBYfWwhlCv9uDvJ/FkX3QrL1U361OM7tMG/J15vx5F3ZtqZ1/r/Z2i8yvaZz9TPalyvaanR5/X+3KWb2fcdkLHao6+eR5ZFVpw12h/4YrzOBNGgDAwTV7wWbvOnUkIHEuupkCjxk4EOhWO2q+XPC9wMK+gFTPhNRVDEtzCF/z5tbyzpqfx82Lbkp086GH4U2L/qb0gSZ0swYoV6G2nuworXnllQt/oqbM2DRLXtOlCoTbtD0sABqyzbJzXD4J1Maobor8bg/qfhajd3GT2qU1L0jkfXKt5H1/ThN8t7hJOVnnCP2Cx9rPfPvSHI0Ui9M8HYvbwNlj/IkOXQ8WQG5EuIzJ8gcAMBtmMNjcprZVpa5z0VWDvxZEWNYIl5aEaU7FuHkZt2aTebU0wRqdQA1QtzriBTtMCmkO2WZuP8Olhr1dJtjGeeD2swmwv48mldoVCmuJTl+eljgIVrWssj/I/rixw+AdAOAAm71gM78Uf5FqlSm3WaSNrQ2qdgpGP6wszVl8gQlbcFia0zRuXsau2WROU3rZ34Ru1355pDk6WLM5slHSbJ2lSrtES8PKkHSbSa2TBLfB5s9x+tkdhP1sxO1i37QYD87wDdAK37zMhUVxaj8w52Xp2DxRZ6CqMAWSr44ZaIcF2SG1liaV/5DaT73NfP1DAQBmHZ9MZ0+32re4aFI8NVjVPl84+v1micetflWNMP05y5vQr1rGclTqN/WcyDQHlrGHkl6wWfL+9otbLj7N6Lykp1u1/HnQpHxOPqxqtV8yttl4ZY9Ls8l/m8sY3+XY22xwuWCek5TdHnQ+D8h+FrVdbPJdGeVyqG3jpGlsI990exhI15cfb9nxyh7In0rbG4/8bjWZ732fg9S2CcuUU4bwDAMAzKSM/I9PpgAAIKT2sUDUNH4+Sh7qWpnzHvKyH3aSB6jCfu6qReXMCs11w2pE5fdCc7RZNNICAJhxs/nTRwAAEyN9lYnmzTZx9fR8hwohfQjk1wfq5oNQmvMTTgg0AeCgQc0mAICPXfsov+vpsIyfrjJJjWdjyej7LLWi8tNceNwcAMCFYBMAAAAAUoNmdAAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYLNvaxXo4VMhsotPb5X7YN83jv/PF14+BX6kN6iXzz8MF08f0vP2SW3ztNFzscv3tLjYdRnJM+7KEk+94Rb9JvnH+bv2B52/fuF1O25YxoAIiHY3FU9qi1MMUjTQWHGGXwrnnJepuzwE0/qv47Q507oPxX7QuUEKTLs/cBqQt56hcv7PP3GuUbvm8AyxFvn6H1apcIf/0ineVh86YieYQehY5VJbZ/wIObDV8x9xtuG/ukyJLxZ0NveWc7MrwRVUYFU5Pp03gemKzvZ572gfmAZXxmM/WqYMZeLPqYBYK9BsLmXZZdpq9+n9bwe3wkJNHObVOz2qc9pqmEiCbNJ5jNNJ47SIf3noSecYEQU6RkdpJy+skr3T49woRzXkZdokdf3jZN6fBfcu3mNDvFF+u4lu7D3Lt2gQ8UTdP+mUfg9kM8kpCz05BN0WI9PwofNa3T8wipR4xLd09OcYOtdumDvL2q4TF81dqdHLzjTZXiDHtPTo3Hw9/QqHXKWG3EfjFzfCS/4Lqxeo3d9Aaexz18o0p3TSYJiCVK/S/SDK3R8ILjj7fLdG/SUuz6i97973thuUYJlX6K7TycM0EXkMT1Mi8qZMv8fAKZhZoPNVtmowTNPKoHaPa8mzz751GoL7ryFWi/BPBaZpi0sLz2VVo4qbaJ6wZm3QE6y5jIDtY1jlSFakryUa+Y6ve0Znc8heWmV3emh8yft5Bt0+vJLHIwcoa9ejgmejrxAj5y4Sn/SF3qpOfrFebPmxbgQRtRGqea95/0XWknHqZ0ya6Nia4f4InxfT1Ziar9i8xln6VV65IYEU7fod1Sgp47q6Sw2n8ycb64vNi8xZQjO89XmxW1rHm+uXiXaPK3n2+uz5z1N7/OsO6edZZMGcW/RnWtL9OWTvD9Qg37nLHPrEt29yoHaG5OLvu+df53uFC94+yQH+E8Vr7o3AZNw+KUfcIC4Se9FNTUbQVu0k/SNQGDtkePKC3RVrePVG/79N8xbTbrDQfFTuuz3LjV4mU26Y+4XupZ2YB9MekwDwK6byWBTAqACNb0avP46qUq3YO1et0qdghdUcahFle01e16zRO3KWTeoip7HQVVum9bcdTWJjDSj8pJd3uK/u1S1iEpNZ94WLWft5fLrMm7P9xm3DNll2qgSVXIc2C3UyAzrhuVF1DeJNtT0PjVLdWroDROZTyVmmxU6VHXKwPPIqtKGucIwgSDbGQaC8Z2Q5tirJ+hzxgX1ToPcWqBnivpCKMHP0w165IpTI+PVRh1+6VV69KoRoEjgslmkp3TT7mNvyDJhtUODNVxeACDzvJqj03+8QBSo/YrMpwqy/INz4T70xEn68tEb9Lvz5+hP/LcpOp92QOmv3fPX4I26zcSH54yy8+A2hcdu68tqWmGVM8kBm72snRd7np1/r/YvKlgK4CDo/tILKpD58pJZ+8vB0JDAzAtseQjcdIS5f+MqHTrqz9Shoyd4uvHlxki2viP0oNPqrGzSu84yp6/R8R9I0DY5qqa5WBhaq2vWSMs+1Wws0fEibxOzdh0A9r0ZDDZb1KhbVD0z2Kbbu7hJ7dKaF0RxALZWatO2G3mVqOm0BWfnyB8/RczrXacOB1UFN/gp8JgjOi/j2kkZ7KCyT12++Ockr4GgM05pbZmcVUqAmazJPG57jkE319vBsDcky0ucwIX3SqBZ9FXvQiwBmNSgqKCj+Kr3OV0bZdeInqRHjZopu+Zq+IU3WMvjc+umqvFx8/nwabqjZznC8uk0g9uBljfIPAlyxOEXjtLdVV4+bL2hJHg+Qcdfjl5g9G1mB1gqcHrFX4U1bLnJu0W/eX3TbZY9/AJHm76m9Hi+Zm1V85au8dZndh2RpuukNb4JvPUKNVefHKn217154fw/qKe5pAaT8zmJmku7Fcc5T3vn7VRbVQAAfTZ3rLdNbatKXV8A5K8V3GvsoLNJpXaFzk6yVjCxPC1xgKxqWeVkL7WcG14wGym1mk3jwpu05muIx152+vrdot81KDYwS+TWDbpv9MFLnNchNZuKCkh1beATTyauUZs0p5bydKFp5zMQdE6Naio3agylO4OuqU7cPDyCsFrMsNrOnblFn16L6Neouo7ov3dIdV04LbXa/pruKGp7bp6m945eodMqOI3J5wQ4N9zq/Cc3w/qcvbWXT9gAM2AGg80szVkcyIREUdnFIln1Fa/JmYOXlbpFczs5z+SXYoK26LzYsnRsnqhzPfld9cTKoGpkzeVGz8vYJM8dM0BPGJynVrM5OqntOrT5ulcbxEHde5tG87tcwKWv31scuNASfTnJtfPIUTrkNr/LAxdGn82TBXr06iq9N2r8FVOzOT55+vcqvX9utMwM3WYOqcmSLgSbTdX3MvFyoezm48hm2ZD+gHZNqtlFwH7gRdVUn3xZ9X18d9xAOGR9UeV75IXJBVwfviJ9V4vhtdcquH6SHjRXF9VPMoYEmqpGMyrQDEtT9msyyqq6sQTyqZfDTxsB7F8zGWwub3Wp2ikYtV/6gRYJVprzXo2a6vu401rIPK2rfpPOunhwm6dj8qLlz6iOlHqe0/fS/hmi4EM7qgZv3DIEH8jJVWi+6V8uPC9xYvIZR5r+5yt2U747+LfLnidB3IUn6f2nndov6VNo1jQeoa++yvNPc9BkNCmrIFL9dIz/wRV1AeY0n5GneFWaT9OfXr3AF2LHSfqG6quo1ydDgv6A0ewapGgx+ZSyXb5Cx685D+TIkOCBpNht5qzPmSf9N3XQMnRbx1O1zKtP67T9zcWqz6CP1ERfpUcL/qhM1fiunuMyStn5e3EfRhpM09eHMrBdBtfHEpTvvpt/ezADtsj18c1JU09/95rUiptBoNElQ63PHyCG5lP6DatlQvYJDpDflYe0fF09/PkMT1P2a2nG18uobiyBYFVuwvif3apxB4Cdy/SlaghgmiTwLRA1nQe31KQMrcx10ZwFAAFyI/I03V26Yvx+KgDsJ+izCXuAPEhFNH8MgSYAeJyfr0KgCbC/oWYTdoE0v9tN7w6rilpNAACAWYRgEwAAAABSg2Z0AAAAAEgNgk0AAAAASA2CTQAAAABIDYLNCbCfmJTft7N/hw4/PpwW+7cYzd/uM8V9D7P+HclPRzm/WTryG5X0m5mCy+0ozQmL/v7G3yf2pVvyRigpz4jGXW4/U2WO3jcmZ//sg/Ja0LDfQIVJw7UqCMHmBKhXrinyZhX9p9BvvvCGUU728TvrWPTJ183Pbr0OcGzyQ+lFutMMz3fk98Di5s0CeV99v9+lasgL6M2g0R6S/YB+XJrTFv39jb9PxDEvyqMduykct1NlX+DMsu/dsuyVbT3+Pjj+fjaex96QN2JdoeOjngOD17Kk1w7fNSfh+/dlXb4XVhjfc+w1NbjvjrA+/nzkDWzguplsf8O1KgjB5qScsN9yIXzv9TXeZ11YvUbvpnwyiSQHjHpTiPcKPvtdxPuMvC7wmvFqv6Co70HEzYvVovJ+e8NRQKlpvuLT+zF9Rb8GdHqv/Rxze0Z9fzvZJ2I8esE4VhK+63s2FOkZp9zqrVUJL9p7jbyZicuws1ezJrSDfXDv72ccxKn33Tt5lDdoxZTVxcupN4Hp5dSboiZw/Yu9pp6g4/oaJ6+Yff+7Cd+ydoKjusalkM8GyzDC8bAr16q9C8HmJMi7nC/LKwnlVXbRJ7fDL/1AvVf5PX0HFbyrde6Y7Gp0/yvhzLu0qOV2JPLuTe4WjYNZfc4bl7z84ry5rP9k4s9rMB1vXvIyHKEvL+n3VAfFfQ8Jv6OJ0U3TA83Q+rWhXrO0BF4ZWjDeDeqviTSCsqg0d2DspvIU8hIr9vsbc58QulYj8f438Hm7NkVqRYYdt8OOsd+o5e15vqYzczm+8Lnvyxdxx1HccknJO/5PXKU/GeeeyON9EuXzLRe9vlHOkb5tIpJuMx6SN2HuYB8ME7OfOSZ/bo0iNWzedYveatKdE0v05WExkPrcKj2ly3vvUoP3wU26Y+Zn1OMvIHhNNR1+YYkOXb2RcL9foqeWGvReIB/3zr9Od4oXvO+Mb2CeKl71f8+RZUjpWjVwDdkn5Hc2ISWXXu7/+Lnv9z/Ro+L2y1/s/9v3b+oxw83v9//tiy/3b+tRntD/9XNf7P/HJT0aZWC5aJ98/7n+j7/4xYE82Wk81/+1ky3f+KX+f5jpB9Yn5THTk3Enz2rey2EFCKSpxvX6VPq8XGDwb4fg8mlr9ktU4v8nFfy8jFv9atcZLfVJz2+WqG+5M+xxqYYcNCRNpduvWtQPLq7S5EPdHawqf9IUvpwtbF6SvMQJLj8JY+4TcowO7F963zX3QfOYUcvY6xo8nqOO25h9Xv3N63COFSN9Z56bnu/4G55m+HJxAmmqvHjnhsjj3XfOCI7beXHLNzAvqgwx61OGnSPD5g9fX2h6Ks+cl8AQn/Zwqnxmmgn3M7XcqOdWV8JrS4Cb19D1DlLXG/1ZtSyX7deBcoQef3pacFCfkXnmNmLethn8Lv373JA05TPq89728dL2mOVSwsrgGn2fGEpdP6LO13sXajZ3k74jUsMoNQ9jLnf4pct28wLfwTVlWd0vRt1xFl+lrzp3qvruzanNGObRV+UuzCZ9guw7sbfozuYJOv5y8LaM3bqp7nDfdcrw8Gm6o2c5TV+qycIY/Hd3J+nRYvjd7CT1agu65q5Adf6voGvxzFrIUL3r1DE+by9vyK9Tt9pR8wvUNN6cJK/ttKh6JqQ9e1iaQ/CJyWtG31qmHb2racy8jL09Exlzn5BahIH9y+Zr3lQ1DRovYzffPUzv0oVkr1GM2+eVIj3jdGs54jWhBWuHfOLSjFtuKCPN09fo+JXL3rmBhR3vw88hZvmM2tKh2yXq/DKmIes7dPSEXVMa7JOY4nlp9P1szHPr2Ow+jJIHyeMzdDrQpzKe1MCqZblsD+pprqjjz2gqH62P6VV6/2m77O9e4zTcfS7B9yf7LCXpHhAQcw4Zd5+IxdcPOY9Pr9vTZCDYnKpb9Ok1pw/GW/QLdSLXO/6VVe8CE2vc5Tx20HmBHr26OtBsMBW3btB938lEBn1BCzQBOUOwieKxl1cj+thMTnZ5SwdoTSrxf3wjqcaHvlazt01tq0pd/Xl72KLgYpY1wpM3CdOcijHzMvb2TGga+4TpkPTzSipunx9XGmkqRp/NiaQXI7UyRBiyPueG/HShaZ97nKBzF89Lu7+fXaK7V72bhcfeSHbtUA+6bJ6m945e0c8HmNe/SQmmqftsynWR8/iuE+Ql/f4KT9L75y7pMU6Xbz7u3/AHivdvXOXpycsw7fPSXoVgc4o+fEX6GBXpUXXcyR2o58NzwRrKI/QgH6v3bwbuiIYul5BK5wR9jo8Z1bfF7PDNB+Z7fOcs82zX6FM1j+9wv5t0fdLPh+8yz4WckU4Wok9WiWoQmNyFPrlLwfIw+SUqtSt0NqpPTatMuc0ibWxtULVTMGr2sjRntakStuCwNKdpL+XFNM4+oVsJkvfNY7xMs7FEz1z+AR2/djqwbMRxG7fPx5FazqsN+l3Y8Rd7HMUsl4Lh5xDDW+e88+C420WJ2NZxkq5PaqskYNls2n0hd+O8FLmfjXlu3RHnGsCMa4dLH0e+4E3ywp975AX9QfN7d4xz/Bl811QTfw/PrHKguHputO9PPdTToLt6NGq/dsskhpVhkvuE0H02J9MiND0INtPGB75qsuZBVes7TxvKDlj0qvzfO7rKB6afuiNafVrNdzu/J1gulD4g3EE9YafveOVAvMB3dDrNC+qpdedu+CQ9xdmw5z1Nd5cSro9PiF+9fEWdJL31Op3YT9I31FN9znQeRmiWcTxWKNKd10dfLn15Wu9WqVNwmpl5WKiROjXIiaLQoeqGNGVnaXmjSlTJ6RMHj291VQDqLuc+IBSTJv+/tiDTclRpE9X1Z4Z3II9bLm5eXF5218j7hG6yDtZeCO/BExn0vivHkbQs/ECaO3kf/4F9jJoXmtDjdtx9no/NZ4zj70+vXjCOv5g0Y5dLQew5RASb5p2nrnd2Lgjf1nazb/ABIjsQilufs5we1Dly9KfDR90HR9/Pxj23xm2XGL59iQfz2qHdu3lN/2WSvMgT6Ho53/euxRx/kaKuqQGHX3qV9/lRm7B52776JN3n7WOPDtuvWYIyTPRalZ0jaRNrb++vYDPTl3YsgH1JTp5yIY3qLwMHz6j7hP35u0tXkvW9hDHIk9RNevTA/HwUzkvJzcLxl6QMk9wnpCIgR5vF7sS6IE0Dgk0AOJDk53Oaq1fp0CoCzXQdtGATkpiF42/aZZCHLHOVNlnV/RVoCgSbAACQIgSbAAcdgk0AAAAASA0eEAIAAACA1CDYBAAAAIDUINgEAAAAgNQg2JyAVtn7vcF993L8pHo1Wpjl8k3YO2/+Kx0/Zw+vdfXEHblLr537Fb2jx2bWR9v07YltMz85Tmdy/90vx+ak8ynp7ZHfdwWAeAg2JyC/Lq/d61I14u2DZjCaySzQ3vzhf/tHvBFMjkAHRmFB5bMv/h29//KztPyQnpBE91duWvYwWnBpBrjHz/07/egjPWNPuU8/upBOMBlHfjJE3kO/394nbJvysamDQvec5VvxHjpPZJdpbb5COZy0APY8BJupsk/McpGTh/7tYZfeZ71TfGLf4vzvz4t1Gu7Saxtdyn1TgkoeTuWo+/MJBHgP5eiipMfDxa9/Rt9LFHDaAdz36Gt2XtTwHP3DF/Ts/eQLc/QTzv8/5fT4JHDwdKoyT81Z3XkneWxKoJnbpGLXOV/xMKntlsI5JL/epFJ9ZY/ewAOAYzaDzcCduXvjq98p6t0It6jM4+Y7Rv21kM6rAllUmnF6F2mzXYq+yEWmKfkqU6224M7z8hg3jw3JZ1j5pNYn+FpCswY2tpvAWGVIB2eT10e8LntY4L9dvGqO+915Tj45e4Nl4nEuviwS6fYvu/Sz7Ne8oIiDpJeyn9GbNxO8gTqmRtT0+N9YtPzQ7+n8L400jdrPbzvTP/pvevOTP6d/fvERezwocn120/yPfvnvg2nGzmNDyuCvZbUD5tsqrXeo9gnRz37uzPMC9NiuB2OVwdY6WyGqnqGwo3D04/3gHptJ8lLmA9Bbp7c9o/M5JC/6nG0O/rzm6Yy88TXsRf0D53sA2DV85zpjmv0Slfj/Dhm3+tWuM1rqk57fLFHfcmfY41TylvQMSVPp9qsW9c3Fu1WrT1aV54ToVvuWmYZvXNI38mLkefi86HxGl08M5t8vZP7YZYih0uDlAkN0vjxcPF6fHuHP82Lu+mSemYSMSz45W7wPeNPkM5wFL50Ib7d+2v/7K5/qMdsHVy73n2zd0WPi0379xz/t/+MNParc6f/jG//Zf1uP2eOX+/X/4T9v/Gf/yR9f639gz1C89cjnfuql/z/X+n+vl1PrDSznMj43OB5IU9bv5m3YvIgyMMmzu9yAsG1iCpk/dhmE/xgwRR4PY+/Xw+btj2NTnbdkfui5KzovqgzGMjLu/1zYssO2mVEGmReWJ1U2c9tqKq247QYA0zJ7NZu969ShOhXcO+ECjxny69StdtR8ad72XvnUokbdouqZkPqPYWmOoXdxk9qlNa9JXfofldrkvVvfqBHVL973RMyLzWdM+ca0szJE0E1tvG/6hqRNb811/QfnydsuxNuFeLt4NZvOduFs2Vr8GV6goWtBLGf6pH30GXXp9/Q9t5buv+hnetZwRu3lF/6CXnzoM7r1iT0a5fbNP9BvszmvSV3XwHrLGWk+9Gf0FfsvLWJebBnu0uXeA7S8EFHLOoadlUHM07GBrivRx8NBPzazy1vqmOsWNykneR3hIZzS2rIceor0ZU923I5xnjBlj/E33KHrwUzyuX6UcwcApGcGg81taltV4rtfI1gZ7CdpWSOc0hKmGZQ9Nk/U3k58ot6xMfO5pwSa/pxhR01h/AW0+evu9om3hzfIduHrlHxFEgtQcY0DzobajDTP0+M8dvgB+u29P+kx24f3PqOvHP6cHovwyf/Sb41+mfH9K+/T7Y+Jcg8d0uPhHn/oAZXuh3o8dSOVAZR9eGzaQWeTSu0KhbVSpy9PSxwgV3L6PFDoUHXDC2YBYP+YvWAzvxR/cmyVKbdZpI2tDap2Ckb/nyzNWXxiC1twWJpR8meoatWpEBIpZReLZJkd2znIWqlbNLeTM2lsPmPKp2RJYuPOQPVAtFTKsMOazVC8LF+zwrcL59Xq8DwOMBf5c0We1ODxYWV4/Ikv0Vd6Xe+BoI+26XzvAXrxifjAkHJfom990qX1iH6apnfelP6Nf07Phz0s073hzcsdVX07v/fmXXueISqfR0Z5Sj4otgyf47Q/o9rWYF5sh+jxz3P2P/H3q4yz8zKE1HrFHA84Ng2qRtZcbvS8jE3y3DED9IjgXOUxpPZa99lM0h8VANI1gw8I5fkiWKWO24GdB6cZSE4+7t1xlpY3pGd5Tp+MeHyrqwJQdzm3g3tMmvx/eeI82HHeji8lTXla0kxTd6iXoKo57921qydAd1rTEZfPuPLZ8qqnfU7Pczr+x5QvlTKkQwIjLjrnUw/OA0Cc13kuV2dO/UmL/G+dxwebXQPkqelvPkC1Dd2UvPEHevGUU7tnPx0efBjGfqjlEfon9eS6Xk6GC9t0W2YJDuIW9fTvfSy1h1+nZ/UsMpuuf/4ZLZ9y5h2ifzj9NfpW77+8NJ0Hb2LzOa64MkhenqXlj828+J+of3aBI+RfvaPn6XzGbbMdlcGuHdu8aB8Fnpjj4SAfm8EHcnIVmm/6lwvPS5y4c2QMLoP6aSMzP4HtIuwuA0u8hQN0k3zb6zsAALskw3eM0okaAGA29Wq0kNumtf76YEACe5eqHCBqGt+bPNW+Mtf19bUvZ1ZoLjSQliA3R5tF8/MAsBtm86ePAAAc2WXakIcCh1alwd4mD1JJf2ovcGyVC1Q3H4TSnJ9pQqAJsDegZhMADgSpFWss4enk/cOumZSmd4dVNYJHqflsLE3uR+cBIDUINgEAAAAgNWhGBwAAAIDUINgEAAAAgNQg2AQAAACA1CDYBAAAAIDUINgEAAAAgNQg2AQAAACA1CDYBAAAAIDUINgEAAAAgNQg2AQAAACA1CDYBAAAAIDUINgEAAAAgNQg2AQAAACA1CDYBAAAAIDUINgEAAAAgNQg2AQAAACA1CDYBAAAAIDUINgEAAAAgNQg2AQAAACA1CDYBAAAAIDUINgcRY9oIUNUbunxva5X4/yWKc3s3jv/PF14+BX6kN6iXzz8MF08f0vPmSW36DevnKd7emy/mZnvSO3PmRGOvxaVY/b/VjlDGU5Phn1zTI9g8uU72NtTGXkfTE62ny9dWddCTS47APvegQw2awv7KGDc4w4/8aT+6wh97oT+03HrPF3k4OaCM7zylp5B9OErxnQ1SDBkk+AoKiCKW0745z9Pv+Fk7GDLnG4Pw4MuDjKf9z53X9J5PlnQGZ1PO+Dzptt5dAW22S+cTfbWK/7P6s+582PEfkcT1eNjK+RC3CpTZg9eNPPrfer3u1S19ISUmcGYPaR7IxhVvh6fAP35sIeF2s6+oUlvzx3lUweF7nL+KC58P91FUtYCNWk9ryeI7DKtzVcoh4sVzADUbI4iS7TVJ/8JAYhOHKVD+s9DTxyx/5Bg6OkGPXLlj3T6j3p446Q9T3v0gjHvj2/QY3r6MOHL2YHhu3TBmHeZvsrZOfzSZT1+gR6lIj2j5y++pPMa6Qh99fIf6Rl6nd7fXKX36Ad0+vJLdFjPHSa6fCfouN4uhVWi97/rBLAciD69Soec5a6s0v3TOmC+eY0OcaB495Idbd67dIMOFU/Q/ZtmpBoj7DtKJL42yy9Li0WL6g3/p1uNOlnFRTl8doYvvlv9/r4+/kpNCcicYZ12oyjZ5S29/iaV+L+mzs/W8o6/oYkaO58SaOY2qdi1P6+GSe00aeyDnN9TlXlqhiSaX+ey11doh/cBALtuNoNNPjCluZtvaNWwUNOT+V8Zr7SJ6gVvvnMgt8pEZf6Muaxz2ZR5zrTgjWaZp9V02jI461P4s8700Pkx/DUh9gVf7oAXeGVlmcYJ1fRn3DyZd/S5CnFR03XyDR2A2YHZN/zx5PTcukR3r3IgGQhod8YJYF+l48VVeoq+m7hmM6nDLyzRoas36D7/fe/863SneMHbhkdeoqeKV90Ak5ZepUduXOL136LfUYGeOmpPHmqK31F2sUhWvWEEpy1q1C0qLtoBQrB2zzyWVDMi79tejZQX5JrLBY+/uDQVqVnV8xLX3gVqxnxpBubttEbQyZ+3Dgnw/emGnQuUuHyOaerbc1xjpGnXlub0NcBZdsG4BnA6I++D9g1ZzaiJ9W0XY3uFzW+drRBVz0TceOTpTJWvWWdDCjew3wDsXTMZbLbOEs03ie9o7WFr2Z7ON6VqXJp5SsZ880a5vkm0oac3S0ROJU1+3Vs2TGVbp8fptvnc4Rz/ZQ5qq11vHvHyGzo/ceTEJs0q7p25UQvS5pUtyd0+r2hzrktdzlTnupy8+KTHAea8U3vSrcrqhguctJ1hRycxDpSekVq7px+ODNDunPaai0cJ4sKWu3epQfeN2rvJsIMzpwb0kNSQjlCzmaR8H55bpfvFgqr1vH/jKh066q91PHT0BE+3g81DT5ykLx+9Qb87f47+xH/vSdlFKlp197ihVoPqVpF0rKmbWr39s1Pw15rax589v1ny0olroo1Ps06FxpI7jyqnEtQSyXG0TWtOmnLgFoyAhIMD9xjjYZQaQS/A4cHpWsAnlz6fbOo63y0+aXT4pOGkG30uiM/nuKa9Pcci5yyz9lLlU6fJJ/oNyVrO2MaaXVtq70deLfNWyDXAnpd0H5TtUtles9Pj77JdOau3GZe90OFrgF6XXFSsKl8DnBX6b8bCDN7AAew/MxlsZufkpE7EN5sjK63x8vpvCTCTNpc0+bMKL5wowItln4CqZyJWXlrSF5vASUpd2KsUtVgk3TRkn3i9YadNRU7zdWGpQc2QgMvXzDxu8/QIy42Pg843Rl9PdD6v2kE4b5N3r61SIUFtrASi4vALR+kuB/GPphxrev3lCnwZ5QBDB0jDa7L8TekDTehmLU9IzXtpbdk4/hLug7FplrzmSRUIt2l7WBF616ljlNneBp7sHJdPgsYx7sZ8zeh8F+xuFz7ZdKsdtU4JLL0ANuZcMCSfY5vy9hxH7+Imtflk7W4mPoetlby8OE3w3eIm5WSdgaAzzlj7oG+7zI14DZinY+6OECJ7jD/RIVWfYJKblAmcpwGmYTaDTV2D2V/STddjBJ2TssQ3spWczofUcm5w/vS8PSONmk2DHXReoEevrtJ7CR5oGYd6CEY3R+99us/mlVU6xNvkXf0AklmL6Rio7TzyEi3q/p9S5uDnJ2Un/fq8mphgrU2glqebsOY9Vgpp9rapzTdtXV1me/Bqv9xtwzdR6liZYDumZY2Q+yH5HM/0t2ea7O/KbgUKa4lOX56vAW27llX2Fdm2G8ZNBsABMdsPCPEdX7/LJ3C+jTbPM8fmiTrX9Uia+E50pUN8ktXBLw/JTrBZmrP4BDXq2VHuqNubdFHdAfeodiphn82UajZ9bt3kQPAEfW6UZ1NGcfJlOn5ik941nnjf81RXAw4wV8+pJ9VV/83N131PnL+3eYIeeSGtjZYSpym97G9Ct2u4PNIcnWj/jDNKmq2zVGmXaGnYfp1fShacSM2SBGPBJs5x+tLxMrnNIm1sbVC1UzBqkGPOBUnzOYrd2p4jbjP7hsZ4cIZvmFf4xmYu7PyqymTOy+prQLCqMAWSr44ZaIcF2SG1liaV/5DaT73NEvebBdhNfADMnKrFRzWXzBlKTT3DwUe+Zcznu3ilWQr5rBZMUwbnsyX+211Mp+2MS5rB5SJWEdDldRJ/3hlKarkuZ0Ta4iSVElkq7zLN0oVQ8/UypaZ8xl5u6i693P/xF7/oG/7jkp7Hbr/sn/fjL77cv63nffL95wLzvGXjluOV9v/DN++5/q9v6lmKzDc/nx7Jp1lej+TBzJed53/7vp7g227O5272f/1cSHry2ZdDVzJB4+1Dzn4YPJ6afLA4+6dVrfrSlnnhx1/wWLAH57PRaUrezWXs48UWnyYXgI9jY55VlUNbZgwsF8xzkrLbg84nnyR8edPrdo7pwXUa38cI+ZTBn6fw73a629MWtc1sEfug2m5OmkZefNPtYSBdX368ZcfbBwP5U2l745Hfuybzve96kNo2YZlyyhCeYYA9JSP/4wMA0sB36dJ03uQt7Nz8880orcx5Dy0BAMCMktpHdQ3wHvCUB75W5rwHwOyHneQBqrCfwmpRObNCc92wGlH5vdAcbRaNtAD2qNluRt+DGnWi+WN6BAAADhDpxyzXACM4VE/Pd6gQ0odAfpmgbj4IpTk/4YRAE/YL1GymjM8J6jfdHFYVtZoAAAeDXfvovwaEB4hS49lYMvrKS62o/MwUHjeHGYBgEwAAAABSg2Z0AAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEgNgk0AAAAASA2CTQAAAABIDYJNAAAAAEjNgQs233nzX+n4OXt4rasn7shdeu3cr+gdPbZvfLRN396P+Y7RKmcok7GHcktPhLHhWNH2ybEi+//E9/tejRYyZdpvh9OBOBeo72aC5ZP0FmrU06MAkzSbwaa6OIRfKJ998e/o/ZefpeWH9IQkur9y07KHhBeecZdT7tOPLox5kdfr/fYv7+sJadpBPicsv96nfr9LVUtPSKJVdi9K9hByYdWfWajN4GkYx4pa334/Vnq1BSpQk9bzesIBN+xcYAajmcwC7c1Du0e1hSkGy9llWpuvUA536pCCGQw279JrG13KfVMulDycylH35/9OP/pIzx7XQzm6KOnxcPHrn9H3kl4Mx11uB9659RktfzNHdPO/6baeBjGsKnX7cnHqU7faoUIg4Gw1OlRtVok2L87YXT+OlZk4Vno1OlWZpyYizQTsAE4Cczne7WGLlrN69n7CweEW53+SX3t+vUml+soeDb5hP5u5YPP2L7v0s+zX6J/4+qF8YY5eyn5Gb95MUHMRU8tjevxvLFp+6Pd03qwNMWpmompJgsuZzZTm+m7/8t95/B2qfUL0s587870gIGo52126/PGX6NncX9CL9Ad6xwwczPJxkPFbPVlEp2k3ff5I5cme55RvWD7jtqes77VfmvMTBha66ciplUh8E55wuezyBlWtOq24Z9sWNTpFWswvUpE26WLKJ+FyhqhWI86jPSzw3y5eN18n3XlOGWoL3t8uHs/w9Ljs4liZjWOldbZCVD1DYTGHvwbPvomSWtAF3snKMo13sJr+jLsPmcdKrkJtPXlHoo4/3Wrg7b8tlS+zFSGsDMo454LeRdpsl6ID88g0JV9lPjYX3HleHuPmsSH5jPqOMpkcVXjj1wvOPK8GNrabwFhlcOTpDN9XV84GE2UD3xXACPjObqa83fpp/++vfKrHbB9cudx/snVHj4lP+/Uf/7T/jzf0qHKn/49v/Gf/bT1mj1/u1/+H/7zxn/0nf3yt/4E9Q/HWI5/7qZf+/1zr/32i5QLUcub6w/IYIrgcr9NJX8rtrcvOp5vewPoMvnkx5VOi8hmzPZlsB3PbyPjQsnarfYusfrUbMa50+1WL+qWmHlWa/RKV+P8OGdfLNUt9sqq8lKdZor7lJMrznb+7VcubHkfli/pyeJmDP0/heNV9zqqNP8+LufmWeWYSMi7Z4Sxyvrxp8hnOgpdOBBwrs3CsGPtygOzHFLLTyX5M6niQZe193du37WnuYmpfNo+dccQcf2qUj0E933fssagyDE1TGTwXqLIHjndX7PnF3i5uXow8D58Xnc/o8omwc5kpZP7YZTBEfefq88nOYwBBeBrd8dFn1KXf0/fc2oP/op/pWcP9Of3zi4/Yf37hL+jFhz6jW5/Yo7HMfmqB2pNYkcvdpx/96veUe+iQGnv8iS95zYPdP9DPHspR2anFCorNyxjlS7A9v/X1OXpc/y39A90atgi9i5vULq15TV7Sx6jUpu3gzXlQ7zp1qE4FfTefyRR4LIke1VbqNH/MXmF2sZisKV03b/Hx5RuSNnc11/UfvFq3yxmvtMP/FIyaTacM2Tn9R4s/wws0dM2D5UyfNBwrMXnZjWNlnvQuamhRo25R9UzETlda0jWhFhUXjYVbDapbVYpabCzDjr/8uu6+Yjdvb7kHeEwZxj6mow0/vxg1onzQ+buDRsyLzeeQ72gMOyuDlj3Ge1SHrgdPdPw9jXIeAzDNXLD52OEH6Lf3/qTHbB/e+4y+cvhzeizCJ/9LvzX6jNnDc/QPX9Dzfe7T7Y/JvVAlZy53l177+We0fEqv61SOvmJ/aIiY5T76b3rTbKaTC+EngebBUOPmJcZI2zNlvW1qG/0y7SGqn1aPrnNUpwJM1eRmNGNJk2I7QVN6oBnLGXbU/MTrbPOVodsnzrs3SBn42kDtbf7IdaLiGgecDf6bx+d5ehwcKzhWpiLh8WdZoaFPuJGOaU/22Lw6WIYdwhMzZj4BZs3MBZtSQ/GVXtfXF+p87wF68YkhF7vcl+hbn3RpPaLvmemdN6Xv1Z/T82E1H90bkfN8y6naDM87W8EakkP0+Oc5uU8Cfdpilrt98w/02+zXjAuWPGhBdh+8h/6MvuJeTO/Tj35urG9oXgwD5YvI5wjbMympWbTMzusc1K3ULZobduLOL1GpXaGwbkhBrbL0kyrREt+927UE5oME8gCRVG4OuVTtsGYzFC9b4sA3tAxcfosD5LMcYC7y54o8qcHjw7YLjpVZOVZCaqF4p5iz2uF97+JIbZd7Q9Wj2qmQPpuj9t0bdvxxernNIm1sbVC1UzD6EcaUYYRj2id/RvXJLoRkfuzzS5zYfA77jrIksXFn8MuNNJEyqNrYkNryWf5VDkjd7DWjf2GOfvLNB6i24dRY/IFePOXUEtg/PRLsqG93xn+E/umUPI2rl5Phwrb3hCpfDBb19O99LLUQX6dn9Swym8BUrYcxL2o5/TCGk8/zh3P0LbWA59kFvkr96h07Xedhgsjl7tM7Nz+jbx3RTXja4w89QL/91Q16h5d7nS+m9nLv0K2vf81b39C8xJSPheZz2PYchwRxzXmq5HRtYW6Til2nlsB+yjTYqd6+puT5Ql6ljtvRngfz9+T4YpDT0wsdqYVY5yV6dHGzTSWJOg1SM9KunJUW66mTYISvxZxPPTgPAHH557nMnTn1Jy3yv3UeH2xaDcCxosYc+/NYydMS34UM3gBlaZkDYQne3H3efLgmCh9jG/KAiDrGcrS91qSSnuXSza91p7/GUDHHnwQwhQ5VN5Y5x5xne+U6oIkrQ9wxHXcukDTliWszTf3gTez5ZVxx+Rz+HeXV0zo5Pc95QCimfBMog32T7XSzMOjvve21yQMklulLlQtApLv02rk/0PO+gAEABu3SsSLdNnLbtKZukqZBnmrmu54m+u/NHvluV2guNECVIDdHm8Wu0a8WIBk8IAQAsJ+p2shOaNPwpNk/yVOgTrWLQHMGtcoFqpsPGGnOTzEh0IRxIdgEANjnsstb1KTCzh5CS0DWI41hCDhmUKts/9h9yF0EvnfYKTSjAwAAAEBqULMJAAAAAKlBsAkAAAAAqUGwCQAAAACpOXDBZqusf3/M+V2yvUy/iSaYz7gyJC2ffC5yvlpvgt/kE/JZ8zcrAQAAAAwHLtjMr8vbXLpUHeHNaPKUnhPA2UNIIDbG2xXMwDAy3RBxZUhSPvkZC3nqcCI/XZJdprX5CuX2fOQOAAAAuwHN6EkZ77ftym/aBQLDVqND1aZ6l+FItXylpp2mPQR+lFneBsHTJ/p7dr0anarMU3OCiebX5Y0cxivSAAAAALTZDDZ187NTY5i40i3hctnlDfV+3RU3umpRo1OkxfwiFcl5r/DOpNXc3zpbIaqeGXzTiFn2XOB9yIHtMlh7myf1VrWwd/zqGl9UfAIAABxMsxdsSmCk3gerawvVe2mdd8rGaVFZvfLNqWVsEkUul6Vj8/pP0WpQp7jIU7O0WJTKzeTRpvNeWzUYfR/Hau4fioPiukXFxeAP80rZKzTv1LLyNjNXKwGqO4+HsB/2zXLBrXrDV9sLAAAAMHPBZu/iJrXN121Jn8JSm7aHxX+969ShOhWcwC9T4LEkelRbqdP8MXuFEnSN0pTua0bfWuZwNW3zpLPq4WC5blXpTETLenbOsoPiuOrJ7DFOuUPXgwXPr6uy4dV2AAAABxP6bDp629Q2+mXaw9bAO2JtPbre4bBNorbeRdpsGzWU0gTdnkxT+l7hvKqsv9Swy4g2cQAAAEho5oJNuznXeFilV6OVukVzw6oM80tUalcorNthUKuco0q7REt5iTWlJrVpBKjyAFGgKX1P9VsMqX3MzpHlBsg9qp0K9Nl0SC2lNLGHNZermuGwWtPRn9IHAACAGcLB0expluR973qw+tWunt7v9quWM90bSk1ndrVvmfOsKi/BfOkZ03V67vIO9flS30vWUssFP9cshSyrxOVz3Hk2WaflbRCXk0f7881+yc3/YJpheVbLh8+wt2nYPAAAAJh5GfkfBxBwUKgHqORBqMDPLO1Ii8qZFZrrhnU76FFtIUebxW7og0UAAAAw2xBsHkDyo+657TXqT+ipHfmZJvmR+GB6aj2VNllVBJoAAAAHFYLNA0oCxMbSBJ4Slz6ZjaWJBa4AAAAwWxBsAgAAAEBq8NNHAAAAAJAaBJsAAAAAkBoEmwAAAACQmqkEm/JUMt48AwAAAHDwTPEBobjfYgQAAACAWTTFZvQ8LZXatI23FgIAAAAcGOizCQAAAACpmXqw2bmOqk0AAACAg2KqwWZ+vU8bdIoymQWqIeYEAAAAmHlTDTblFYmnONzs9/GQEAAAAMBBMPVm9PljiDIBAAAADgo8IAQAAAAAqUGwCQAAAACpmWKw2aJG3aI5tKIDAAAAHBhTCTbt11UWqF5aw4NBAAAAAAfIFF9XCQAAAAAHDfpsAgAAAEBqEGwCAAAAQGoQbAIAAABAahBsAgAAAEBqEGwCAAAAQGoQbAIAAABAahBsAgAAAEBKiP4/uNHNhB5/TIIAAAAASUVORK5CYII=

    data:image/png;base64,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

        public override void CreateNewOutputRows()
        {
            DateTime sheetDate = new DateTime();
            Boolean InHeadCodeTable = false;
            int rowcount = 0;

            try
            {

                foreach (DataRow dr in ds.Tables[0].Rows)
                {

                    //Grab the Date of the Spreadsheet
                    if (dr[1].ToString().ToLower() == "date:")
                    {
                        sheetDate = Convert.ToDateTime(dr[2].ToString());
                    }

                    //if headcode found and blank found then end of table
                    if (dr[1].ToString().ToLower() == "headcode" && !(InHeadCodeTable))
                    {
                        InHeadCodeTable = true;
                    }

                    if (string.IsNullOrEmpty(dr[1].ToString()) && (InHeadCodeTable))
                    {
                        InHeadCodeTable = false;
                    }

                    //MessageBox.Show(dr[1].ToString());
                    //               if (dr[1].ToString().ToLower() != "headcode" && (!string.IsNullOrEmpty(dr[1].ToString())) && dr[1].ToString().ToLower() != "date:" && rowcount <= 50)
                    if (InHeadCodeTable && dr[1].ToString().ToLower() != "headcode" && rowcount <= 30)
                    {
                       
                        TrainDetailsBuffer.AddRow();

                        TrainDetailsBuffer.IntegratorSheetDate = sheetDate.ToString("yyyy-MM-dd HH:mm");
                        TrainDetailsBuffer.TrainNumber = int.Parse(dr[0].ToString());
                        TrainDetailsBuffer.HeadCode = dr[1].ToString();

                        rowcount += 1;//increment teh row counter to limit to 100 rows
                    }
                }

                TrainDetailsBuffer.SetEndOfRowset();
            }
            catch (Exception e)
            {
                Console.WriteLine("{0} Exception caught.", e);
                bool pbCancel = false;
                ComponentMetaData.FireError(0, "Opening XLS File " + this.Variables.ExcelFile.ToString(), "An error occurred: " + e.Message.ToString(), "", 0, out pbCancel);
                return;
            }
        }

       

    I have tried to set the XL in Connection managers Tab of the script component and re-writing the c# to use that instead of creating the connection in code, but this never picks up the filename set by the foreach loop, it always uses the default value set in the variable at design time.
    I have tried creating the source component as a asynch transformation with an OLEDB Excel source component, but that only reads the first file and never signifies the end of the dataflow task, so that the foreach loop can go and get the next filename.

    I have also tried different transaction settings within the package , dataflow and foreach loop, such as the default ones of serializable, and NotRequired, but sadly I get the same behaviour.

    It's as though it is opening a transaction at the beginning of the for each loop, and any error, rolling the whole processing back.

    If there is nothing I can do in code, how can I handle the errors gracefully and continue to process the next file, this ignoring files that fail to import ?
    or am I missing a "commit" inside the script component to get the contents of each file committed to the SQL table ?

    Any help much appreciated.
    Phil

  • Not sure, but have you tried making an explicit transaction such that the SQL command you supply does the BEGIN TRAN followed by an INSERT that includes your SELECT from the spreadsheet data, and finally a COMMIT TRAN ?

    Steve (aka sgmunson) 🙂 🙂 🙂
    Rent Servers for Income (picks and shovels strategy)

  • Thanks Steve, but sadly no explicit transaction declared, it's as though the foreach loop is opening a trans, then when the Dataflow errors, it rolls the lot back.  It's a foreach loop with a dataflow task inside it, that's all.  The DF task has a script component source, passing the data through to a landing table in SQL.

  • phil.mccormack 72103 - Friday, November 9, 2018 6:43 AM

    Thanks Steve, but sadly no explicit transaction declared, it's as though the foreach loop is opening a trans, then when the Dataflow errors, it rolls the lot back.  It's a foreach loop with a dataflow task inside it, that's all.  The DF task has a script component source, passing the data through to a landing table in SQL.

    Ummm...   that's not quite what I was referring to...   I was suggesting that your script component perform those steps to create an explicit transaction.

    Steve (aka sgmunson) 🙂 🙂 🙂
    Rent Servers for Income (picks and shovels strategy)

  • Ah,,,,,, ok.  So the script c# component should issue a begin tran, but I'm not connecting the script component to SQL, it opens the Excel file and process rows through to the Output buffer.  The script component isn't currently performing the insert into SQL, it is passed as a dataflow to the OLE DB destination, so are you suggesting, just make the script component do the whole thing, Open XL, process rows, inset into SQL ? 
    If not, how can the script component do a Begin trans or a Commit after all rows of the current Excel file have been inserted ?

  • phil.mccormack 72103 - Wednesday, November 14, 2018 6:32 AM

    Ah,,,,,, ok.  So the script c# component should issue a begin tran, but I'm not connecting the script component to SQL, it opens the Excel file and process rows through to the Output buffer.  The script component isn't currently performing the insert into SQL, it is passed as a dataflow to the OLE DB destination, so are you suggesting, just make the script component do the whole thing, Open XL, process rows, inset into SQL ? 
    If not, how can the script component do a Begin trans or a Commit after all rows of the current Excel file have been inserted ?

    Yep. that is what I was suggesting.  Let the script do the whole shebang.   Not much point in adding in the other pieces as you'll suddenly have control of the transaction processing, and  you can then do pretty much whatever you need to do without having to learn a bunch of SSIS, or get challenged by it.  The additional flexibility is tremendously useful.

    Steve (aka sgmunson) 🙂 🙂 🙂
    Rent Servers for Income (picks and shovels strategy)

Viewing 6 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic. Login to reply