1 2 Previous Next 24 Replies Latest reply on Apr 6, 2016 6:43 AM by RishiKhanna

    Parse through a pdf binary string in sql

    RishiKhanna

      Hi,

       

      I synced a pdf file from a container to my sql server through mirrorsync. It gave me a really long string as the pdf file,

       

      I can confirm that this is the pdf file, as filemaker recognizes it as one when syncing back.

       

      How can I actually access the file within the string,

       

      Thanks in advance,

        • 1. Re: Parse through a pdf binary string in sql
          jrenfrew

          If the string is what I think it is, just save it to a file called "anythingyoulike.pdf"

           

          Can you post the first bit of it and then that will confirm my viewpoint.

          • 2. Re: Parse through a pdf binary string in sql
            RishiKhanna

            I called it myfile.pdf,

             

            here is part of it

             

            0x255044462D312E360D25E2E3CFD30D0A31382030206F626

            • 3. Re: Parse through a pdf binary string in sql
              jrenfrew

              That is a HEX string, which decodes to

              %PDF-1.6

              %âãÏÓ

              18 0 ob

              which is the start of a pdf file

               

              You need to convert it for HEX to ASCII, then try and save it and see what happens..

              If these are compressed binary streams in this you might have a few issues..

              • 4. Re: Parse through a pdf binary string in sql
                RishiKhanna

                I tried to save it like that and said corrupted file

                • 5. Re: Parse through a pdf binary string in sql
                  jrenfrew

                  Then that's because there are compressed binary streams inside the file... which contain Ox high ascii characters which are being decode differently,....

                  Your the option is to convert the file first to Base64, then save that in your SQL table, which means you can sync it, and then reconstruct it from the bytes...

                  • 6. Re: Parse through a pdf binary string in sql
                    jrenfrew

                    This can be decoded to file if you use ScriptMaster with Apache Commons Hex.decodeHex()...

                    • 7. Re: Parse through a pdf binary string in sql

                      Interesting thread.

                       

                      This process, however, seems very complex though perhaps more in implementation than in concept.

                       

                      I hope the OP posts back progress from your suggestions.

                       

                      - m

                      • 8. Re: Parse through a pdf binary string in sql

                        John's suggestions are excellent, but what you are trying to do is rather complex.

                         

                        If this is a one-off requirement (doesn't need to be built into the FMP application), or you don't mind automating this outside the FMP app you could also try iText and a small java program (TONS of samples are on the Web). Just make sure to get the 2.x version of iText which is still free and uses the MPL - The Mozilla Public License.

                         

                        Having said that, some examples (or indeed what you want to do) may only work in the "Paid" ($$$) version 5.x of IText and even then, reading text from a PDF can be tricky due to all document sections that can exist.

                         

                        HTH

                         

                        - m

                        • 9. Re: Parse through a pdf binary string in sql
                          jrenfrew

                          M

                           

                          in this case there's no requirement for iText

                          The file apparently is already a PDF, is just gets turned into this data string when it is transferred using MirrorSync to SQL from FileMaker....

                          Without giving it all away it's only 4 lines of Groovy to get the PDF as a file from the stored data

                           

                          a. decode the Hex string

                          b. create a fileOutput stream to push it into

                          c. write the decoded value to the fos

                          d. close the fos

                           

                          john

                          • 10. Re: Parse through a pdf binary string in sql

                            Cool, well I don't know Groovy, but here's how I did it in iText 5:

                             

                            Assuming the PDF has two lines of text:

                            This    is    a    string    on    line    1.

                            This    is    a    string    on    line    2.

                             

                            --------

                             

                            The basic two iText 5 lines (Exception logic omitted) below also read that PDF's page 1 and get the simple text content into a String. The third, optional, line prints out that string on the screen (as shown above).

                             

                               PdfReader reader     = new PdfReader("/Users/.../SimplePDF.pdf") ;

                               String pageOneText = PdfTextExtractor.getTextFromPage(reader, 1);

                             

                               // optionally, print out the string.

                               System.out.println(test);

                             

                            I'd never used iText 5, preferring 2.x when possible, but in about 10 minutes I downloaded the JAR and created a simple test class that works fine for extracting simple text.

                             

                            Using iText, there's a higher level of abstraction with classes like PdfReader over less abstracted classes like FileOutputStream, ByteArrayOutputStream, and the like.  To wit, I'm sure regular Java could do what you're doing in Groovy as well, but since I didn't have an actual text Hex string to "decode" from the OP, I didn't go that route. (Created a simple PDF test file instead.)

                             

                            When I hear "PDF" it's like a dog whistle for iText 

                             

                            - m

                            • 11. Re: Parse through a pdf binary string in sql
                              jrenfrew

                              True

                               

                              Not what the OP asked though. He wants the file, not the contents... (well as far as I read it)

                              • 12. Re: Parse through a pdf binary string in sql
                                RishiKhanna

                                I'm still working on this not much progress made, I am out of the office on weekends. I'll try your method

                                • 13. Re: Parse through a pdf binary string in sql
                                  RishiKhanna

                                  Here is the full string,

                                   

                                  0x255044462D312E360D25E2E3CFD30D0A31382030206F626A0D3C3C2F46696C7465722F466C6174654465636F64652F466972737420392F4C656E677468203137372F4E20322F547970652F4F626A53746D3E3E73747265616D0D0A68DE3C8ECD0A83400C845F254FD0EC565404D9437FB4A514C4F5261E4483F5D0DDE2AE60DFBE51A4870C61E6CB90000484108490A678B6B3F120F131F6AE0E39281BACBE1FC2A21DC829B521C693F10EA235C627F5637BB24B2D0E02D689E491354E581B3E9B988560434B72769E3A72DC725D7CAE7DEB89F75C4B90F18A288519D7B397094876A7986CA7C9D7585C32AC68F1787FF337E706F5ABED473330AE6F12F606BEF87FACD44F80010011F23F740D0A656E6473747265616D0D656E646F626A0D31392030206F626A0D3C3C2F46696C7465722F466C6174654465636F64652F466972737420342F4C656E677468203131342F4E20312F547970652F4F626A53746D3E3E73747265616D0D0A68DEB2543050B0B1D1774A2C4E75CBCF2BD10F71F30F090BD6762CCA4CCCF10DD177492D4E4ECD4B49CC2B01C9162B181A00D507E9BBE625E7A764E6A5EB7BA6A4E695649654EA7AE8079726955416A4EA87000903FD90FCD0BC4CA0A254054343B01690B03EC8103B3B80000300961926120D0A656E6473747265616D0D656E646F626A0D312030206F626A0D3C3C2F4D657461646174612032203020522F4F70656E416374696F6E5B35203020522F58595A206E756C6C206E756C6C20312E305D2F506167654C61796F75742F53696E676C65506167652F506167654D6F64652F5573655468756D62732F50616765732033203020522F547970652F436174616C6F673E3E0D656E646F626A0D322030206F626A0D3C3C2F4C656E67746820333238382F537562747970652F584D4C2F547970652F4D657461646174613E3E73747265616D0D0A3C3F787061636B657420626567696E3D22EFBBBF222069643D2257354D304D7043656869487A7265537A4E54637A6B633964223F3E0A3C783A786D706D65746120786D6C6E733A783D2261646F62653A6E733A6D6574612F2220783A786D70746B3D2241646F626520584D5020436F726520352E322D633030312036332E3134333635312C20323031322F30342F30352D30393A30313A34392020202020202020223E0A2020203C7264663A52444620786D6C6E733A7264663D22687474703A2F2F7777772E77332E6F72672F313939392F30322F32322D7264662D73796E7461782D6E7323223E0A2020202020203C7264663A4465736372697074696F6E207264663A61626F75743D22220A202020202020202020202020786D6C6E733A786D703D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F223E0A2020202020202020203C786D703A4D6F64696679446174653E323031362D30342D30345430393A32383A31312D30343A30303C2F786D703A4D6F64696679446174653E0A2020202020202020203C786D703A437265617465446174653E323031362D30342D30345430393A32383A31312D30343A30303C2F786D703A437265617465446174653E0A2020202020202020203C786D703A4D65746164617461446174653E323031362D30342D30345430393A32383A31312D30343A30303C2F786D703A4D65746164617461446174653E0A2020202020203C2F7264663A4465736372697074696F6E3E0A2020202020203C7264663A4465736372697074696F6E207264663A61626F75743D22220A202020202020202020202020786D6C6E733A786D704D4D3D22687474703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F6D6D2F223E0A2020202020202020203C786D704D4D3A446F63756D656E7449443E757569643A61363636333837652D356463632D343234622D613035642D3031313833306663326631653C2F786D704D4D3A446F63756D656E7449443E0A2020202020202020203C786D704D4D3A496E7374616E636549443E757569643A61666130376337332D626135312D343534632D623730302D6566383364343863363763353C2F786D704D4D3A496E7374616E636549443E0A2020202020203C2F7264663A4465736372697074696F6E3E0A2020202020203C7264663A4465736372697074696F6E207264663A61626F75743D22220A202020202020202020202020786D6C6E733A64633D22687474703A2F2F7075726C2E6F72672F64632F656C656D656E74732F312E312F223E0A2020202020202020203C64633A666F726D61743E6170706C69636174696F6E2F7064663C2F64633A666F726D61743E0A2020202020203C2F7264663A4465736372697074696F6E3E0A2020202020203C7264663A4465736372697074696F6E207264663A61626F75743D22220A202020202020202020202020786D6C6E733A7064663D22687474703A2F2F6E732E61646F62652E636F6D2F7064662F312E332F223E0A2020202020202020203C7064663A50726F64756365723E41646F626520504446204C6962726172792031302E313C2F7064663A50726F64756365723E0A2020202020203C2F7264663A4465736372697074696F6E3E0A2020203C2F7264663A5244463E0A3C2F783A786D706D6574613E0A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200A2020202020202020202020202020202020202020202020202020200A3C3F787061636B657420656E643D2277223F3E0D0A656E6473747265616D0D656E646F626A0D342030206F626A0D3C3C2F417574686F7228292F4372656174696F6E4461746528443A32303136303430343039323831312D303427303027292F43726561746F722846696C654D616B65722050726F20416476616E6365642031342E302E33292F444C492831302E312E302E3530292F444C495F436F7079726967687428446174616C6F6769637320496E74657266616365205C28444C495C2920436F70797269676874205C28435C2920313939382D3230313220446174616C6F676963732C20496E632E202D2D207777772E646174616C6F676963732E636F6D292F4B6579776F72647328292F4D6F644461746528443A32303136303430343039323831312D303427303027292F506C6174666F726D284E54292F50726F64756365722841646F626520504446204C6962726172792031302E31292F5375626A65637428292F5469746C6528293E3E0D656E646F626A0D362030206F626A0D3C3C2F46696C7465722F466C6174654465636F64652F4C656E67746820313233313E3E73747265616D0D0A4889D4574B6F1C370CBECFAFD0D940D77A502FA00810BB4E7AE9C18D81E46ED4D91476802487FEFDF2A33833DAF5AEE1197B8104EBB13E49A448F125E99B71C6F2CF19578CF3E6F66170E60B77CD7FC659F39731E7EF3F38F3F9875059F3FDB382BFDF9BE19BF92A38E664722AE6FB3F666B3E9AAF3A81A10721B81792B1C5F8FD4F46E7ACA7199C96F2DAECFCAD53DA53518A19ADA3B59B4AECF9DD86FD3CCC4B741B10D896B153DBA6862DBBFFEE6C9822E5A01ADD0207EDB244F585E4A0E530CF4EF6544C4A89677C751DC2E46AEACA0319D49569B2D0D80E61722F044E29E4E26630E7EF90DB3777EC570AD5EF35F0914BAD002493C22610995493B979187EB736046BE91D7F853FB236A6862D8F7BE00B1EF3FA7573315B3B60B2278E97DC4FF382D33898B91F1D18DFDCFC3B5CDD7421B474132EF94DF56CC89CC75DBCD51DE0BB6A82472D215C14C1EE827E5195AAD84579A4D191C47DF5480D8E4C0C81A981C8622EC7DC21CC72DABD8021F2901786C86455C8528730AB0C3BDB5E212AABA81C4997CD316E9C6DBD26CC49BF616B6ECD20DA3837EBB5291C9D2323F4C472689918329AEABC1D21444FB7267DC1BC9C10471172AF5668A24746A834AA7C8BC2F6F16CDC88E7F3CE23FF8088770FDD5C8730BB6FB335EEE7CD14F10D8328BBB2BE47C5AFA72E3CE040CD208911ACEB5171870AD5A9842CCE711B374458353EA352D1545C1447CDFFCB96E743EC07C1884AF5B631C962592B54C402AF530F5A4E04937D92240A26893932D50E6176278916337036F9A8699AC43D99B59911660F27F85251DCCD4EDCCD285511107A94258F87470EEF1CDB58D313851B0EA3DAB0637F38B4EC23C763ECAEA93F480704B91187AEDA3FC528380D6D4088FFD023227647C3181D55A3A568F84118B7C328315C68B8BC284862CDEA881861CDC857830ED5BC1F240B19B804D7A441126310B2D8A39A8E06C93251ECDFD82A085012012CA643C53F2748629A4E7764B67FA9953D97ED424C0C909C54A8D8A342EBA93D0FE0A804485E68A847251C2AB6A712B2B8D87AE261DF99DC5FCC4576BC48C96DEF721EA338E72E3265BC640D876E5942C88B78FFBAC535253F1630B91423223B94BCD9CB9B850C5C52931B8BAB5CD2912D1D4A53C57B9437CB44A12E521E8BAB2F9A2D1DA229D19E2CAEECC857CD9BCC922BC28E811C08B8077488EA7A6A3EA7088A00C89D0AB7860ED1EEC371CC9B1309599E3755F26636F9EABC49C89B9D67D2EBE7CCAF4C0E5AC7EF835070D51144B865CAF57F4665BAEA34060CA1C0924D824096DB33A0B4474D28411F1AC0F21410484188819C3E3494915C5B8EE49121320845C0C5DC5E20DC633C31361C1A711621F76D50454F8C8526959958DF234E9CFE9B9BB67FFB305C7C32E71FFE74E6C7D65C7D32D7FC1BECA664D66AB741A88C66889319A29A21E982CD7241FA0DAB19EA6406D9E32610CD8C6CF466063B9BC1AA1940885EF353636C58CD902633A449F4C4C82A8D2ACBC3ECD776E3D66CCDDD5997BB2B4339AB0D54A7795B2312BB3C3E89968B4A3C942D1880A2DC46B0AF19657B50D4A263858AAA2588A07C70B547BB6AAD6018C3461045212B3D3A62B2D38A5A7ACAC892EC093DD4715AE050A8F3A3474E928443E3F841717DF4D0B0EA1F7BD04FCFA1B39B4A0EDAF74DAB3D2D143894F86AA8B120108B58FDDF861F27CAACF2F0BF00030087D00B070D0A656E6473747265616D0D656E646F626A0D372030206F626A0D3C3C2F42426F785B302E3020302E30203235332E302034352E305D2F436F6C6F7253706163652F4465766963655247422F436F6F7264735B36332E3020302E302036332E302034352E305D2F457874656E645B7472756520747275655D2F46756E6374696F6E2038203020522F53686164696E675479706520323E3E0D656E646F626A0D382030206F626A0D3C3C2F43305B312E3020312E3020312E305D2F43315B302E39353239343220302E39353239343220302E3935323934325D2F446F6D61696E5B302E3020312E305D2F46756E6374696F6E5479706520322F4E20312F52616E67655B302E3020312E3020302E3020312E3020302E3020312E305D3E3E0D656E646F626A0D31302030206F626A0D5B3132203020525D0D656E646F626A0D31312030206F626A0D3C3C2F46696C7465722F466C6174654465636F64652F4C656E677468203531373E3E73747265616D0D0A48896C94C18EDA301445F7F90A7781141694C4B19D5221A481409B45674603FD80603F682470A2242CF8FBDABE8191AA460274E49777CF4B6C265FDEF7B317D31C69967D4DD807F5CDADD334DBFCAADA6832291A7DBB921D5E890C99C76AFF9DBD778DDED3C0E24D5994B61EA6AEB8B4FA7233F4A8FA7FD19ACEB5FD2CF1392C3E34BF6DAD1B43B39FBEE6500F17B716FF280B36346C5C9B46F3B10F9B3F3A9F6A6BBAB1193BFAD651CA99A9F53052F8D657378CBB777FEF07BA96F6D444CB259B7FB8B57EE8EE2C2EAAA1BA34E75AF72EE4AD33D4D5F6CCE2D2B8D1EBE13E65F3FDAD6D2FE41F054BD86AC50C9D9C8E937FADAEC4E6CF013E170EF796180F9C42C6AFF76DA5A9ABEC9922E6AE65E2AE95FB29E462159135FFD4880CB71E4FFA4FD545BE3CF3E5094F568176A04DA0340115205466A84C052805491007295006CA4102B4002950017A09C439680742824002478240024782400247824002478240025F83BE0572BA81B6204C243151862E125D9C52A01C842E125D04CC14CC04CC14CC04CC14CC047A2AF474128124089E0A9E02790A7902796ACCDB8016A02D680DC21B53786312F329CC27F13C159EA7C4B439A695B0CE612D619DC35AC23A87B584750E6B09EB1CD612D639AC253C736CBD718FF94D18CECB6373EB5BD7B97D1F0E55D8D97E4FD7969EE7AE6D5A7F57F8B8D3BBB5CF3F0A4F6FBB28FA2BC0009D4021300D0A656E6473747265616D0D656E646F626A0D31322030206F626A0D3C3C2F42617365466F6E742F54464F5456532B417269616C4D542F43494453797374656D496E666F203133203020522F434944546F4749444D61702F4964656E746974792F4457203735302F466F6E7444657363726970746F72203134203020522F537562747970652F434944466F6E7454797065322F547970652F466F6E742F575B332034203237372031352031352032373720313620313620333333203139203238203535362032392033302032373720333420333420353536203336203337203636362033382033392037323220343120343120363130203433203433203732322034392034392037323220353120353120363636203535203535203631302035382035382039343320353920363020363636203638203639203535362037302037302035303020373120373220353536203733203733203237372037342037352035353620373620373720323232203738203738203530302037392037392032323220383120383420353536203835203835203333332038362038362035303020383720383720323737203838203838203535362038392038392035303020393020393020373232203932203933203530305D3E3E0D656E646F626A0D31332030206F626A0D3C3C2F4F72646572696E67284964656E74697479292F52656769737472792841646F6265292F537570706C656D656E7420303E3E0D656E646F626A0D31342030206F626A0D3C3C2F417363656E74203732382F434944536574203135203020522F43617048656967687420302F44657363656E74202D3231302F466C61677320342F466F6E7442426F785B2D363634202D333234203230303020313030355D2F466F6E7446696C6532203136203020522F466F6E744E616D652F54464F5456532B417269616C4D542F4974616C6963416E676C6520302F5374656D562033352F547970652F466F6E7444657363726970746F722F58486569676874203531383E3E0D656E646F626A0D31352030206F626A0D3C3C2F4C656E6774682031323E3E73747265616D0D0A10019F442F5051300FFB77E80D0A656E6473747265616D0D656E646F626A0D31362030206F626A0D3C3C2F46696C7465722F466C6174654465636F64652F4C656E6774682035303333362F4C656E677468312039373436343E3E73747265616D0D0A48896C560D5054D7153EF7BEBFDDF7C3BEB7BBC02EACCB027153661351FE31DBF0D43A4953D14C042353B7C8804A4422046BD160342655F3D3485BDB68C67634B1D39A6A12F9D15552435B278E64984C07C769ED4CC27490641C314E87DA4C15B6E7DE07B49DE92E7B38E7BE73CFBDF79CEF3BF701018034D8032E58BF69CB8E8DE07C6E01D4746DD9DAD8E098B5CD00A4B3B1B5A1CDB1D78C02E47DAF7943439363EFB05194AD5A5D58346377A258DFB6B563DB8CFD678037065A1B3A9DF9C4750865A4B9755BE78CDD0750DAF46C43EB06C77E3400A0AE6FC6051CFB71E6F740E3F66D9119FB28805CB3B16D53AB63AFBC83F6B36DCF6D98895FBB1E40BBF8D8EADAA58EDD80F3B20F03658795F00B022800B956AE351F050111EE4784C1FBB604F720220E0250F800A71D942EA0B31B769D91E9B29AB53D14A4247DDFD65C7159752F16E3F262420AC7A6C6A06A6ABC2AFB4C883F8DE2530AB2AA7D22B8174B15621C2AD04F88531A21847CA2AADA8BB9C70F0762B195E664225E6D4E98631862CCBC0D5555D5E6D4F87756AFED954420C48C9BF1BABA450B7D82556C09426971FA17E59F97BCF329D922B8C9F2E981FBFF9C3E343C8CDB8477A73F232FC130A8B0B25FC5A3FD564E9227ED285F94A8240E2A15D000B94259BC0AEA612BEC866378B2631ADB086E6372CC9CC0D5A08A49DCD1D404B1BC958B1616E3A27E5979B0ACACFCECF0934F17559609C3C3EDAF45AB830DDFC575979024DD4C5B319B0FD9C136DA26D06A528D4BE603CD92DAD02128B6FD2880071D4B98E350583DB16821B49384AF34377D092D20C9FE7E96E9DAD417A2250D8209F3A8C7363CBAAE2FADF5E89AB6B4564EA6BEB42D664B01662B2693D96C54639AE385F6A49D61184B6B4332931E9D49C564F20C6595B3D5ACB028F9C38691E9C6C97D1E0FAD658A1D340CD42CD0D90864E83A4A9D8D41612C161B46318C49A9C28D673B18F8DF489318496691C6FB0C832BB7EDA0A6C92CA4C946C0D47526D9D85CC8FFC4EC93234133944CDDE9A111ED626A1432F0E7C59F27356AAF14E5FDF48076C073254D722B5A802EF7AD487F22B82CBBC6B72E7D5DF0A9EC16A5456BF46D496F09AECFDE417F206FD7767AF6CB87959F9B5702D7E935F99AF6574FD6DC76D96E592651F97B1F4B1B2A5FDB7E96A4CC0EB79D9B5FB2D04DC06DBA293F18F3E0290A310F77778EC5EB62A5B107968B0D5A1D904C0DDA119C1A011B2BC93DC0C53C807B4077F8F26B88B0BB78E8446C02255313ED5C9D490249B443022AD887E0AFAE2E36FB8158CC677ACB8A8B3232BCE92695F3F31E8CFACC8CE2A232CB8CE6E729726DCBC8B1ED3DDB966E1E397E75C78FCF9FECEA3A79F285AE2712748488E49BA7EA7BA753D7A7A7A7FF78FAF039F28BE937BFBA439AC9E6DBCFEC639CF91CA1770F51A7C275FB5BAAB3732E557E42E052754EC1A5601B56498BB89B1EA4475CE22991B84196A8E096884EC990CA53A1B22C028960FC646AB4CF341148C9D44DDBE2F00A7178A5717861CDED2003CF2C42385AB27409095022B158692C964422922D5129A85D2071F24370C8D4EEE4917FD088574F2175AB322B8955C9F2098918711EE6E65BB2AC94227D8BE9BDBE2523356FFEAD709BF8FCA35D39EF3D36548FBB8C03880A66214C03E7414166B00CB81018BCFE0AE30A53F808271542A397F3CA6183DB328D80CF27D71A0C3396C595DBB6DB34510BFBA530435026730887D9D370280D9F847576DA70920ED83A5533332339A685ED31077B4EE1D5612687A190412456C5E4A522463F3AB7A0EEF552BEA0EDF65874769D515BF3FA686DD8CFC658EC1E0CED1C8032ACDFB279E6FFDF6A8C916C3DB61A5FCC2E7B447A441E903E920794CBAE2B21E5DB7A9D5E93D6A237A5EDF4EEF4BDE2FDD07B23EB46F69D2CFD23ED9C8F669B21739E1936E58BA93B98C55170E17F3756382BAC9A2E591E0A65F943A12C57284B20D49515128CB099A4277A5759C44A92403F3B01B02DF712AAABB344556789AA32A2F26EA676648E20781959C9007D112260920A5BB7FAAB683DDD4A7753915EA00F400E397886D32E31398140899B930EDFE253F1AA89A9C498E5655841B13F6D412C6D9779C9E9F630CBC10A4890C473334C9C9F9E1B2D47049595959620EBF86D8094C47B4156F04F54EE97D3CCF9EFBCF5D56F8E3CBFF72839EFFBFA4F23771FFFF51FDE5E173E7D7A49BC71F0854B3736B6FCF4E8ABBE4FFF72F3F4DA773F3C71A0611163E09AD4B89881D88B91BEB3428037F9E40C0299D2FB5FED5B0B066C56BC400808E3464C478314E4AB785B78C2AA5A901E0E89E182905460E41B7A2048C01B3119DB224A94C744F768216BBEC385EC0BDECAAA2ABCE726B0F8131F9B1F7B2BCD4BB122F663C5FF86646418CB8D7D86B8DC7ADADA9E2D3C95B1C5DCEC6FCAF8BEB1C3BFCF78D5FF4AF6AF0C558A081C749A6EA4890AC17509ABA98D271B200128008394E261D2C5C0057A0282B4D976E32E25DCA6E19D2DB177B6C4DEB95EECEDA88F6C8DD048805124B247997555665D953957A523CADB769440D48C523CE9E439362BDAFD7020492A7A8223E402A900C08469733DBAFBA124F9C90C3A62131C1F33FD783296986BCB53638C17F822C0C0E260053B0BA2039B0B69AF63EDC5579EC15A310785523EA7CEE28301446112F2F3A26BFA727ED6B2FBFDB77715AFF07BB58EE4BECDCFBCEEEFCBBDF95EE750CBC6A6BDDDD35F5EFB7D8ABC1438B2FF83BD5DC7FDBFA49DBB1AF7BEFC72A4FFF2A69EA6FAA30BC2BF7B6370FA1FE3EC6D210B3B9689EF652AE6F7DC79D053FFB24FB1FC1832070E6FE132976EA79D7329F1762E73E9765A3B978A8B373C2E157E71B95CCE384BB08B4B894B994B3797CEB5E05DAB37EB6FE927F52BBAB44258611C12052FD21B74595024551314BC4F0C634810FD82200A0650DD101561800EE0BB3625C76C1544115D6048159374E3394952ED793925EAECC5A13A6F155CB9CD5F2FD42429B70DC5CECB2F51F6E4962ADD1ECAC8A019FE12A0268D5081B2C96C0E2A6367D91CDA9F9624AFF37ADF627730BB372619ADE3E6B8C9AF0D73327E376E55B2225756EE5F1013B11F783C1E2CF7B2756BCF8391FAACC75B89DDF6AAAD15570A790F570AE2BC797116E2DF8C570B7013D7157DEFED5FBB9257B2AC95656BBD926C196C081807638388C500EE046AD725FCEC89C0E18F9D0F605226099338E59706DA983221852414281013C6031493DA0E3305D7A5D3A11E6892867E42D30F50E8D4859619A08044EF7B2B813BC94CB3A35DDDFDCE7BE79D7BEEB90D40067826EED5E26A95D6565FA5C5A3555A381FFE475631ED68C0A55FDC502978EEB1B8DC5D9E1371736E4CB627D79377B79D3EDD951A8BE7EFE73EB8376D7F6A0F48D99BC916BAE2B5E00F73402782A884703D608FAEB3847077A7032B9322722628CED4AD082B3F340AD9FE911D5DCC1FB2A7D9CAD24AE2B02DA3F650730AB270019E8F399C37CC8C3BB1D30955264F089B5EA7C3C4A848A76F31FBA89B864EEBBBC114C760F6D1487BBD814F06F49FB38C82744A0CEAFD092A30235B72F114299E3325778AD5E89969B5708BA44572B36791B55A7E3E7F83BC31FF53F9139F5BB2E80A16DB6B2AD2C980DCD028C46E48F446B115B142F4869B8EB2DE49609C79F8635ADBBBA9E464C68CA920A0E34519888A327252F4404E8A5A7526273A463A10102678FD27D49BE8ED23807995F16C93A592C912C764296076E3AA78B8DA986F3C67BC62F006B3E70643D1F0D1770D1F1DA9D14D0A8F953E7082B6CE0C559E415B7498D8004C4C6A2A2BE9A3547086B2083C2196A2C5CCFE8912551A0FAD44913072EBE3A8EE60EF435912B9BBC7FC231E6F993D69D60232E9C4D2AEE49A73EBFF9CBAF8EE77AE745E488EFBC6F7EA56EDDBFBD28BEFF34FB89A47D78E7EEC9F9F2D6C4ADDFAE8F5C197F174BC161F3CD5D177EF42E2FD86EE5D3F387C1898D803656B231F65DD6365DCE205244A0A11633C17C322EF20B151A81A11EAFEF6C8E9CE6A254CAD1A0A0DCB2EF8413B073D156DE67A060606B88681817BEF4113475023E89A267C8C4C1446EBE3A3B60436E791B581B579644160711E69D19E729146B020A4C235C545F2726589477AB1DB8D9CC3BDD844B4F18C84C2A15881A320160E5BB150C844F3CC671DF38CE6427D9E0546A33932A791A93E004F753F465BBE246BF96EC6183F2FBA99CA27604389048E8E7D745CC5B8C7C85059E7A9AABB884427807F8B4D5F59E18795FBD6B4EEF4F7E4DE3A731EA3C675732B02A47B002F2FF434D78E9F50BA7FC1F8E53F6CDFE11BF8FDDF0F34ED5D5D37ADE9E9D45B74C6F79308090DA0E4127291600FC26031D3B6E71E0B94EEF4152113F094ABC643C516795BB7D30FDDB19B4259A4479EE6273B27AC49C4F47C12AB020E26053E66F3D93D95D50E87837D871D1517FB3E8B2516635796CE74F5DF5DE9E036CB4A42BFDB40B94EEB8DC82A90386B943E5A5F2A2F539AF4D7B876FD97C269F1A47E5D5765A101CF26F5FA32F5887E43BBE1BCE152788D77F22E4E752802CF8395904549D22096454DC208D11967B1BEC192342FDC221C47AFE5D06B9CC56B5E784B31054136454EEC262BE20A92B5AB718209E9C52AC2588D7B340B2D96B819F5FC59FE739E6BE731DF8D715CADD74E4A9F6B5CBB86357AAE67496725F28AD42611695BD6A7E76DFEE6C20E3F3F703890AB0F0E227F752C30587D91D1677093F0486929148C4D8FF8D93FA33914934D7A7FBFABBF7F9360FF03ABA61F519F987EC4FC66E3DC2E3E8B93A55EB0C8E8FE6D9AE70D78D5CAC497148A075B0497E30817E2B2435CB458943852FE6B32F7C2A1E4DB7B7E87FFB5A3269C5F2EF4DEA9C12752534823DEDEB3E6BB9B11E4E876C8A8ABC02F37AD1C78430FE261A586ABAA388BE76B22B3234B22ADCA7A455C1E785E58A1B4AAEB8475AA58EC53387F7189E90B2A192FAA648A090DE279CC0528D91EB3A464F870941F3401E902686E90ECEFBE9F626FF833DA0AC1CDB893AAA13F2A6AB4A843ADB91C2FA2D542F4D03A218A741D45998E4A64CC11BD9455E2CCA2CCD7862AF5CD7836FD5A5154CBA75FD31CF41B1A656031FD82161801E31922D20EFAB469B186D44A77A337BB58334A8374277AA78B11CC0E44BB3775B07E34513AE149FF835E33114B52E350C7CE6B6DCB686F0FDB0BD84149405862B4AD2A755751FB68BB47DA9796BB4343ACA18B4470688CDD594423E00AC6D87203F17612ED38D3BA64E98637E6B49DDA92DA8627BE5A396D7ACDB777A5FE809F99179DDC387EE69B5B529D426F43CFE27907CA8B4FB42D3DDA54C6CD70FB96D43EFEDCF0BBBB25ADB2A566C60BACD35872FF6FC2B7405B83E8DAF185A43948B0BDA66CAE57E2F36964A131CE8568055A1D6C43EB83ED68A77088DBEFECE1BA9CBF709E43178337826E9727E80E06B9127198BB24DF2AF89A73B6774ECEECDC65424BF025CF66CF4E6E876B677E07DE473ADCBF7165232F0AE85E3DC08342FCF1C7C3AA58E3327558959E85309F07C594CB3379458F664D43510B631C2830D8D2196CE90CB67446D49231C81BB52B1A1DA59C6B2E8415A9D301F9045B02580D08D215D41670B89558096097E255D810F948B81040F514827A1B52946A39C9F17A6891E4BBFA26A67E76693075FEEDC37872DF6778C4849F96F76D3BF8D7279FB9BCF1477F21A4ECDADD53F8D98F2EE15947FF7466E4EEEFEF4D5DDBFA61EAEAEB27A82FDB05FADD08F99585823837EEB10AF064D9CE07B76E6621D9C830D8C830D8A00C0EA727A6E002D6D3298C988A83B252F1B32B8CD04C520305419DE1A13383A63307A27F6542DFCA10FA7686D0E697103A7D9AF81F16978D9EFC42BC82CB93645116645EE6C55C7FC04F44D50159E7E0C41C9FD797EDE3C43CCE08618F0B0E7E393F847D0E77887A94D2D212D85EC509CA78C367F8C0A610E07B51684C854D78F030A15DF83F871A5F6E58DD5AF7E2D6810DA9A3B86AEBFEB2A9B56F3D5DD799FA95D09B13FCFA82D4D9FEF752A9834F8DE9AC289B7AF5C0E55B2526CCBD03B46D0360AFA0BDF189A260CAF21B129624C4F1147F244BEF400BA91212507985D8058D49186395F27FF18BAB0C402D9D22A92FE8826342868569206B33D290A8BD088EC7968104D581B2D100414E88ED1DDC857B97C89164BDD0DB991ADF995C42B3731FF0280C7351B146DB8D93715F76CEA33C672A8EDD8E730EE21008516558830C9DE40C9D644A278525872549226D9398B2C27DEA9321628E5CA4F6B884292C660A9B68033B4F54868BCA7051192EAA8D0BCD53070CE12B0024A7011AC2339F0D906639B1057EBCC9B9C2C94F68F083D5CDB0EE21EF12F61540891E817AD5B1AAC428463E0C5209B8C11E81E3BE3E72A7AF2F290ABDC903A4F14E0D3996AC8591BE03C8155016E0131F70FE3436578ED3C0A366A621FB351F58052A74411AC9E0202C49062F21838FE36485274491641E9EB8CBF0E532F8D22B802FBD64892218AC7F30208407F80A1E8A029CFF97F22A8F8DE23AE3F3DE1C3BBB73EC1C3BBBB3EBB5BD3E581F0BF83E0699789A72060C448582035BA0C24D3842E2E6A009AD204A3802918222A1A68742D54A554A9B02C1316B40ADD55A45A87F50A551DAA0268D2A208896163556CBB5EB7EDF5BAF31E59FD6EBF9DE6FEE37DFFB8EDFEFDF7E1A3D2166530A49292B940DCAD3CA6E4554E4A9B05359D831DF6A30A9FF2DFE8407DD3B157FFDF7D218642D3A14FC3938FEDFFEB450D8021F116667F67D6BEC8484D26E84E3273E3DA59AED720A0C646B7F4B33A62C68D921D95FE0C1778F0E2FF064BFB5085BBD4075DCC3323E1C07D85A8478B486415FA9F1027A04361BF7C7876D80E545580ED04178F384E34D4E974C49197835585869820B4DCCEF9FE3E9E973770BE2E93B2F09BB6E2F1076DFD95DACB4421ED659E35CEE865F31606E8DD025C692C85A636D4450D48AB0AE7331B798F956294DACD23202B8398CD5D34AB38C3111CB8C3AC8066B2A586F67A18BE5442A41E03FE16A2C3B34B67C1ACB0EEDFFAD1A0FB289F8F4E27B8F4E0C16F3A0AF587F4B14826501700656402BA065D1AA2A13F054EDA40D6FF46D7BA3FFEF85F385FD64E7D9B7B24B5B5E29BC2A9ED6AD81E127CF14F2F99FF1E4B55DEB5E7634AC32CDE0C3D34C6D7CE2C725F6750166A5009303814991708BF90C667DCB37995A10F1E303CC1296221A3B7DC7371189B442E0B1E04AA210CCD1674EA68AECFA949422B489273CE0F7C8645DB9EA2BCC7BF2A4EBFE59EA537F29F9F06EC96705262E387CA23CFC9DE92D0B483904F8A5EC1550703D4577B19E5FFA834ADB81B596DA8572E140A14CD4DE79E7F6E7F0FE38C7059E070FB8F49B235C78A280CB05EA8839412F2ED7C3ABC2B989FCE4097EEA04FA219C2BB26750564C5FF14C45511620026BCB3CB3549DBC6D7C08E30C6EBB5602E3EC0D40573F185234A6D83E80BA0CA8814B9B0D56DAF5B84ED3B33ADDC5DC4273B1B5D05DC3AD36D758AB5DE34DF9CD302D26AFDF6690443CE3B48BEDEA3C719EBAC45929AE54D73A9BC44DEA56E759F15975A713161D95E7882583A7A98C69D18B7F26F0D02C5328657E052F88229502D05842F0B9414D0F87D5886D594E34E6BA4E6EA2E7A4C8B9291C55CBC4D17FCC9183290EBA11D4B108219C2BCA7285E3461CC7B5D460B0C2B1005AA61A0EA70C336218A6155465D711C3A6A17214A624F2AE110E0783B24C614EAE6599A01A12B158C2F842903CCAA53815AC039BCF89E4D1E114B2C2783C470E9E789B35DB6C22DE974FB8F97C229E7797CD1F9877054A1C4641D1E20FBE90A0022B6D50F9FA58E54381F6C000D1B24F078506A667AC84A61B506D61506D26A8B677AD10CA19546B4B8ECF80838D70700424DC68773F5714773A1C39A9FAA20F174149255FCF7253C56E5A7C92363B1AEBEC82C182C106694750D511F25661E7B93FD726BA432476EDFDE535C959577E5DD87EA6F0DBBA402C52382F9EBEDBFBEDC37FADE53FC9270A7FFBFCE010FF732890D9D752030BEFFC08333C08DD7031C4B7CDA7463803EAD264D8FECB5710992A5A0CCCE2BEA54E7288DBC54417A56228B38AC7721591ED4E49BF3616F66C3F6D9138892AB4C16AB0BB4917DF2D7707BBB5397A87D565872C3B6555B55B68E06D9F9E84519B1C8393A38C94641B0001AFE2D1EC203B149A161A02F54AA39EB63A8539F21C059FB8485E2964E575CA63FA4AEB7132206C91B72A9BF501EB39E145F905E5456D87B5C3DE2B1C081C081D1672F229EB37C279F90FC21FE58FF40FADCF84ABF255FD8A351338D0352858265D6544D12A325AA867374F22984C2D45E59C88E1864C0949D3555F4764481CD5383944296BA81856B0AAC52CCA42020583046A1FCF4369B3C3BAA611C3D04CCBB6155811AA29BC6A87142219D40E866C3BC505231C17E4A9A6A5543EA2AA7C2818E4794A6D4D53554E6E7288030991527D95AA39B2FE542A7428341AE24339927B6F3D3D422905E487A421DF58615C3078032EF243292E1E717E55B501F224B36C1CD324EB5E8E5FCF5ECF02609992BD2F55F689F76505875FE379E13026428F3C367D2826C2583FEBD7C58E3415D240184638050940DC23401174B7CCB350ED9579767110C08DC3659E5C5DE6C1DA8FBE9BF434A4409549CFF6931E0F9BA647633DB6158DCD95838078019082A462B605CFB43C452DAF9A4BB8F2AA1E2584882252ED181CB363700C1105747F924DCFBA7E3248B283D30E70993642DA4831094929FD82B4ABA07E46425FAA69F922A9FB7D3E4F33370AAF5756B5388543F42EFD4561FF73BD2B56933DF9BEBBB7A832AB6345458100377964E2AA90141EE2EAB92EFAB63F33A8051BE35AA2B1416B6CF4B44EA7AB6C4EE3E2C6AC966DDCA26D6EDCD07C40DBDBF0DDE8F7123FD19C7AF0CD1072853A8CB538A21FC78FD60FC7CFD48FC52FD4BFEF7C5C2FCF8B920ACC5813DBA265A11555B41D9841CB1155C62ADDCCCCC6764FF0662E1616CDFCB2DC9FF99ABC39F3BCBA4F3DAFDED26E65CCAE769D0846536D7BACB52AE2AE6F78AA8136249BF45EFD75FD883EA18B47F463FA3F745E671C865509153BB48EBD0B1B362B1A558621C1096CCBBA140E834D635FD319EFD6F5241FCBD1A3BEE6CEC407B88723C964809B9A3A37BF2ED49AE495868DC646C6992649C64DD612B1F1FB3A3E8D9318119851558B6C1BDF8DA0C8B66B05640BB07F09EE66609CB90FC09F90580062F3AA2DD188DA1C5DEBEB753E9736D2A97473FA585AF420FA86749DAE4AE7263E2C8171C60ED32D1E63E71535EDCDDEA8477FE0112F861FB0151F1D9371A2B1196E75938C5737B136DFC4DA7F53ED2FA50B12AD947A252A4518698AE03512BB47D299285399207399205371FE12E389928E0E45A106B6A5FB9E4602AA338884701C0C10FB0C9EC85E2F094E46F83399CB97B9DEEBBD9732BDD7F3994B90C44DD3EE1D847D93D17F688A2DCD5C96E5C5200CDCE00C49AAA94E77B4777676B15F473B30CA6A2950F7106D6B8D466351C789446335695E0AE8C03CA36DAD7811DFB36964CBB1B30B9F59D4B1F5E2E3A46DFEFE5D2F941F77B7FFEED5FD475718C158F5D964ECAB634FAD6B7D72F3133F4C97BFBC6AC14FF72C7B695944D712B53342DB67CDED1F74070F2EF1373E32FB1B37EEEC99DB4D3EAE4F1AF57D4D8B36AC5D3E770707D9B417B209159DC19593F3FE4E22AAE15AB1439C2F8ABD95C72B69656575B22DF970F2E9CA4395D21CBB27DA93581A5D9AC8CA596D4D381BFD4A628BBC4D7B22BC3DBA3D315AF9917A317631FE1FAAAB3EB869F38CBFAF245BB16559922D4B96A344F93221B1C747EC04E8F91A514A580781F0DDF5C8E6964269D8569201C73A38C2DAB276652BDB1DBDAEAC253D28A31D1DA1D032726C6483F14707177A85DE8DD2C1AD61A35D815C0719CB48B2F7794420DCD9F26B59B65E3FBF8FE7F7FC3DFAA5F9A5F559D14567D8B14A7CE395F1FA045FBDE2FA66294DBEE5BE734537840135A4C6C2829F238536338260CC0E4B71E02680181FC96D7118FB9248EE8AD3125525978D79ED92E0B880AC848A91E2B8068203D06CD1871495E047809B6C7111B90967DCF980BDB49A6A1CDC4943BA681912417108A807C11B04310C67BC84C92301F924C77553BA9576D04EDA470587D6D33994A7109D4137143455040CA7483DAAC22FD108508F22F5A0FB1D046EE3A5066C8FC6616F5487DB51AB78C624CC5DA329D9966B84E912CFF532660EDECB56A0237B68C03CE01C33DE36D25A5ACEC6BBBA4C0D9B6254525E56C9EB26508A0D328C74F46BBF3ED8B6FFB17DADEED057BF3FB292CB2EFCF9DABD6FAE59BBD7D73578E3A5392F7DF0FDA16B431FBF465F3EBAF0C5537F397DE214649DA6E1CBFC15E6BA09FAEFC3C464135619542688150CE051C1A3EAD5148FFB396CF2D9F046852A1275491359457822446C498CDB8244C331B1000A2662C1C410144C54A160220AEBD49913F0FFAEA8C79B6BE0397142A13B2310A28E3D2D3ACD9C1F9D6FE6A379733BB79D7F55DEA5EE4A840A642BD8C23DC9B7F8D68456C9EDF2EED07B81F783EF8542466873E8338E0F977D5B794AD9A8F00A05EF1C3381C0A6F26C5B5B4907B948FA58A6531489DCDDA3CDB63E42480508895C512AC205E8CB658538675D1F71D5ABEE26E45285947258626779DA0DA7D81CE70283A80B57D13A1CFC5C64848B74F83A9220812478C88E21DD6248BD18FA5DACA247A48E582F726218BE2606E16B227627A8DD03583B769C58983D7E6774F30872D7E09ADB66CE2F9F89219A4288669FB65D4FC1118BCCCC4C9B325E6DEE650F6012F4F06FDE6EEBD404FF225A36C2486598E218E09167537C6E7FD1B5DF9E1BFA4FDBE72FBC73DED9676D7CE4F9B7773DDBF233FA9C79A88716D1E05ECA6DDAF746E1CAEF1CFBE8E33FFD88794E03E3D205E6391AF39CA3EEFA2027C849392B3F28FB6AF55A7B31B720384F9F6F3FC13DEE5B1658AAE7ED6EE78CEF6CF453EB52F4927ECDFC977509BDC5709C54020C696602DC491CC755C8E38CFBB85A7926375D6ED01FB2170717C94FC897FCFF3406E8F5B04A637C585215E63992A811663AFC3DA673F3109A4E06F0FCEA10A298D494910BEE2541259220A9AAA735AA6AAE96D7DA35E64BC05CCF9DB408588286ED187C4AF303CF35742B0D7E41021CB530E0C8DE5F458BD2BC9B790B378F425A1D41364410DF08B2215221AA88B60A9F1C157BC40BE2B028003FE688BC588CFAC1BE27167BBA42CE60901013C819AB38DB34CA6920AC350259EE980B9ECCA948A0C154AED7339A1C3CEF5A4D6B33739A5A686CACB379CC60B643F5BB56C34F5E767CE3D9352D679EC9BF3CFEC060C9DE356BDFDCF3C3756F6C7E7DCBFF76EEA0FC4FE64EE5C2030D5CE4E4077F3C71EEE471E8483359472A664E1363EC78DD351D62C7B8857CB3AF39B0505AC6AFF43D15582615C42094DC2E55AF3B0F5645361C2B237FF50DE8FD096162E43E6BA23D35D298986ACF8D2CB1E6D98F46BE9B78D45EE75F17EBE7FAE32A31A8229B669391375619BC612B5BD50E955355A1D00E8AA48B7B1B5432E2ECDD2E42A532416F8B325B30A1D16040616062B6628B9B186B4C9725EEF307A1F232200BBB9221D841E5318C072AABB39D3295130E7B772039260BAF87200639D431A0372C811F32329E99AA88BA8A3C502B44B7A23A3B82B5A77ACF014A46E16E23EE9E57D888B881E833DCEFED30CDA9C6416C2CB355C6817E0CED8DB7FBCA204B2EBDE80BCDB9C1D61C4E60803C4C24986CDA466C4125991AA2E962A901D0D3D231186EF86F75A5AF1EFE7CE81AD5CF9FA5617AEB72F0DDE7966E193CC7CD0D4D5EF4C2FAB7E82273E741EAB01E1AA26387FE36F45FB5645FD70ABA6DF3B415BBA1E744191DDA7D1F119356B9C57A802AD6786B82E55AABACEDA15FC96FC9050979ACDC69755B82056575134EB6A840E6438A1DA4312EA54705DE4F823B74AA0F47B18651573071616231CD90173105C273BFA0A0FBEE03132767E1D54DD94E762BA1960BEAB55C99A997E840063216CE9032D033496378463D636CD0A1E2C44BF1B8F8078610B6183884A97C67DC3A42BB4829E9A741C266C7FED182632153BDCE864554DD95D4153642D6E772B94126BB291A2BFCB41FB8BAAAF903A2BF80E55E351029249A5F29A46CF8AADEB489A6981EDB325A796DA6363BA98EC991F934D8742C132BD7DEDDB1239A7866EDAC2585936BE63DD8D3C3BFBAA57565B66171E4B56043FEB12DB79633E53D303497FF8229AF9854D33FBB7949F2E96929A9CF92A6EBFE4091559496C6E8E9F229529DFE0DA9415F243E2CAD9006823762E171E5E9CAFBCBEFAF9C55B935DD9116EB4AEBAAEAD30D5243E9F4AA05A50BAA9E1497962EADCAA7DBD3E72A2F975E2DBF56A999863FF63B6EFFC1B17654C456AC969009D888DB4937394DD824C36D70559F6D2BC1E965762868C432C94C70446CB8C000024E5909600693F1F86993AAA66BE6CD7653483348B88569746313DDD8BCE3C626BAB169E0670C2DCF8DE12A3FBCF7DCD884A90654C31603235A1F70572073562B3449CA1C2493836472904C4EC551A547B9A00C2B82A3D42B7358D2C0F30A7AB5821A5512C015A50CEEAED8706705BD59416F56AC547A7529D8736AF65D99B6367AA3893ADAA1D1A251BEFD39A6D75E906C2FBCE640A4ADAC859BA6617AB34425132AE7B9B4599BD1749C47A2A3AC7AF93EA966DAEA0DCFC7C3746DE7277DDFFBF0A7479EDEBDEC938E3F7CF1CBDD1BD6EF79E7E9757B1E4ECC4DD63CFEC8A4CE1769EED35728DDF24AFBAD969B3DEB7EC3577FD87DF4E4B113C740B53F2684BFCCBABB4EB71D26069354CCCCF22C85BB387825855A7E3ADF250B782A665A59B3400B693AEFA344B17DA22E0543233D373402770890AB863A8692013753971D0ED0EE0035B0E11A2E801B188B471D800DC004AB41790398E60309B88E9DEDF7800EE8007400A823C19E024110297CFE3E2010986D80035465EBB29D469FC1AD323A8C4E63D8100C4E47A875845447F0F524FA86ABB25DF5B17F4F4A187B2F1201248FCD0316AE896EE18D1605B01922DC768A016F0E201CDA038763C7ECD88CA6F8E8E0D6EA4D9F39184BAFDF4B809467D6396F069842239E4F84FD613119F6870AA95CC01C82308B486D22CC62682AE38D068611D3CA3584DE1FD3FE4F77D5C046715CE19DDDD9D99DDDBBF3DEDEDFAECDF9CEE7BB33C9196AB08963D7CD6DF88911AEED24FC08832F4111A4C5C42D36069A5212DA404C9B9620AA36A91409482C6889D4D8C68A489A285605480D44D0264DA55460A2B829117565B5C825A1B63BF3EE166C9AF867E6EDDCEECDCE7BDFFBDEF77A879E1ADEF1DBA6A1ED5B1EFC5903EB03FE7528D7F7D2E4A3E2D1DE5D2B0FEC9EFC1D6387FD2CB8EC2326E01574DCB1458D1F5F8291C0A8C0C87B1B089AE01AB26B60E890B825EAD057C148605460640F4FBA523A6FC8AEC11E9E74A2DC12A151936024302A30A27CC21676E686EC1AB0733DB7E83DDCFDADF4203D42FBE9301DA1E35411688C6EA57BE8E1C2D2153A4DB51865FA5DC1A24489C4233C0F767D0A09442658234A4A16F0617C04F7E3617C0593613C8E4501C7F145768571BED513F9CE85F063083FD6F8FE180A05760B05E63D240F3DBCA7C6A1805BD43B41D0CD2A01AF08D9B10CD462FECF13BDBB2BF3553F8145D52189C57BFFD0D010BE76E1C2CD104EDFFC8867298BA67483455317CFBE2E0192A99B6DAA6B605ED816406801F10446B96083A0206BC83A2A1579FF2D4F10897AF889495E298B9C9BF306750DE6C7AB8EC11F5C2DEDD44493C40365356CBBF19366450DE5928ACDA60C0B65B0E0EC652B046319935ADA88E51499A7ADD5764ADBB58FA44F88728CA0729256526A1DB99766BDADDE36DC46D62A6D74377E52FE153D4BFE843F24A3E433E53FE47335646A9A2C49582444A15465175455530A092A0A91304EC95A5096358D851BAB888552268ACA9255D0F02954E45019F3B8C809955F2D8B43376680B62A3EC8C49C0E4ED481207470919E1244581461518445318510D31559A195A5140BBBB300A8C100216100410042041308025A3C017A4DC1F6783F2E6B7C7C66616005A0D928C8850CD77013995CF3186BEA182318EC9781A5C11FA9EB95E767F06EE3349BAD8C8F198AA136A80D128C03445CB26AADE36DA22846F74A22B5BCFE1A46155D6D0C5C4BDAD73A1AAD8CD651351A6D60A1BD3C18AD63D30783719806CAEAE045DA582BC01A022193614FBC2190E9E1C1B23A9E3683613E5D1E34EA487E822B0F4C037AFEE10CB4997C2BF312466A30CC760B061B60604F4D0C5AFCE17F0C94E46F47B93610A0DC2A409FEDCB690D5523548E14067774E2B3A90EF4CEE5A9A34FCB6FFEF72DD43FB56372A318FBFED47A86FD675802D4722643CD8E77268FCDE22EC77F2753CD6227C77F2717CDE21F5E5958AE00DBC85C58D6DE5B0373CDA2FC5CB5203F2752303B2956268BE4987C581E91712B1BC66529266F95F7C8D33266754513A57CA9E1DF042527C474DE61010D0BE30C4A33EACE8DDB75273AA3EEE4619557A86A419EE6598719D32079845BF423B4E0D9F4C3F987552060205017DDFFCF363C04CF0CC96F7EF180AB033E656A328C069C802C9180F86BE394F189F4F7C0B834112098677742F7D63C69A0178D8BD6156BDAC27135E80B864DA60310097B35AFCFE373C580CF65251F170331EE7C5FD282DA6F810ED04101E8A000F45B0A4087C3EB09B8833F090A400705C0AE3FCF2B001D1480CE1502649C0E224347EC4F6FB1B8B32BB91AB0C62D71AB75C4EAB7862D6C496275280CA91D86340F438287214A13437E7F3E065F2E02B43B44807F8608C085980C3BE69DA2A225624CE466D07D5E165C076130EB03F633068AA1816B83ECD86D6510267EAAA99AA249C448FB89AF041569664121DCFD432E1B59A8592443A011220595008D84BFF7E5ED97361C7DD0D086EEDEB27CDB719C7EE1B5655B9B17EE9EDC263EFB9DCEFB0F9D9F7C8BB56CC2D2E9ABB88245DE2BD8E89DD743163F4F80513F80AD88D7804DDCB2E10353D16C4F2359AEAE216DEAB7C86655AD31EACDFAF0226B99D16436859759ED723B7DD8C899B9F0C356A7DC49371A9D666778A3B513852891BDEBA555F22A6DBDE7096993BC497BC2A345E660C5CF7475D0454C305F7FC0B8E10440C2254BA0332801E828BC0780CE40B1F8AA621456C7877884C08072C70D1E293080FB79987CC9544D958204C550E28AA4709469204B168C94A0127E476769794D15B37D00171F00C507A0F125058F8F37942654000FA0630EA0C307E800D52C782061C3800F876D1713B2CCD11E601BF836C103BCB5A0B8A6B690B6B9594830BA3239561C72B3F1C1BA86EC184B67D6397671FEA52BE595F431F9318A39C98282306A19108410340CC2CC866169DF8FCFFC1585775D7B6E646AEC8DC1DE67074FEEEB1D1403A8E2C08EA98F27DFBBF623548ABCE7CF9DFFE39973EFB297ED9DDA8CCB182A4CA114FDD2E9F118F38C6F184D06CEC6FBE3622C7E97A73CBA30B430BA38BA357E30AED647EA4B56445694B4A9EB3DED91F6920E758B67B3D119D952321C7F3F78C9BA54FC7EE96870B4F44A7C3A1E2EC71923135A84EB8D07F00A639DF137FD5A74CAD0FD3E293C670EE15C32C7A70B3EDB0584ED02C2E68088712FDAC98B1A323447DBA0EDD1701C601107883019F3A9A373706856E1FA0B57DFFC13F0014287C342E3D85EC483A4F5A040B5586D42BC4D88B4097132538230CC24003A82FAD138C2319445AD4842208D394120900208A400021C220FDF047152E128805BA169401EBE15323942901D6BACB510D300B71B042E199BA141BC3E7ABB71CC75E523CF42CF7981D38290E3842E740578DAE77B83A0C81BC40ABF3423E2BD7DF587BEBDFF62C7F6915DEB9E9FEF3FB6E37BAF1EEFD93630B5597EFB270F3DF4D3E9175F99BAF9DC37EB276F4A7DEF9D3EF7E773EFFE85D7817D8C12CEB2B8FB85CB4EF3D702C8C0A81CD7E02578257E1CF76042FD2A55A937E0A75E4152910E0113343AF7A08AD4443C800262C20F1EF48337FDE047FF57F75DB7EADF0DC73F8372092415AFD185E277BDD07A91191AABC56C3CFD65ADD7A891BBDE3DCA9CC65DC6FAAC3A50E082F1875EDFEED3DC81DD28575DF05E44E1CE52185FEE7BF9BECDD9F58FDCB778F1D71F0996E2F4D1AEE5F5C72B1AB31BBA273F60EF9C9DBE2A0D30CF5449AC4246E088168C368C735D9456B846DA3552AE91748D72D748B846996BC4F9519F861E2A114CD4D3157469724D6253E207F400DD9B3C1678B5F2F79297468AAD485553E58711B9445C2D8AC642A459ED6A3B6DD7DAF5764FBBB743EDA01D5A87DEE1E9F00EA5872A8A2AD2C98AE45DF724D7696DFAC6F4C6B93DE53DC93DC99F6B2F790ECD7DA1F217557DDA6F3CAF54F4CD3D993E930EC359B88713AE51EE1A49D7289C97B84720EEA1887B4CB23ACA64A36396D6AD532B521E0D17C7D321ACCF8F169F124F3809BB9287386667ED56FB51FB35FB824D8AEC98FD5D7BC4C631FB795BB4DF660808313C9E1010C34E90DF6E200789FFA3BBCA63A33ACEF8CCECBB66F65DF376BBA78DD7C7DA66976062AF316E48FD121241E21AC411CAE516B50D888486235581061AA3A29844399AE68F24522BD2542A8914B536188369D322358D9A3FAC5A15410D12A9A5A21445418A90CB1F45E07EDFBC5D03AD6AEFCE9BF76667DE1CDFF73B7C3A058A9FFA94515458C95485AAE0726585D2855BEA77D6B3FABAAF981A4E43F937C0849A73FB2C4C601869750BE30D399A6BC986894CA513BB77236864335189599D4D6124660BD8335BC05E59E520B229C58729054967D96662CE5E1B57BEABA504039DAAEB9D2AD112BE13FB97904A715055C1FE25349238045466C67194524ECDA0B1AD54D9DA79AE93F5750E75B24E9F52DA423291D750F15E88369FA920512B52D1D280732BA8282CB4780A853C3577AF803FF650B2B4E2143C17DFEF2933E819F866AFE9EF357B93BD17C908106970CFC0CC1DAC03605DBEBA77A5122DEAE19EF2C0D5F26DDC82462026B8F65DDD13F47644DA13104C5D20EFE003E9978EF44CD876CFBC663DB9A055FA819FF063469353C813DE6EE6A97E0F14F39270DBE836E74953B3635BF3459EB6B7716194B53C69F0EB51F994D12A45051A9172A97CF8F06172078CD2C1BDC090730FF047899E54048C6DAD6D0B597765714F049C90FC4A2B25D3A09DD2F358449CAD7D27BCE79F39B8BFBBF8DA876FAE7A6049E9D5B587DEDF2447ECA7771C7C2295EAC81FF9C3EBEB777C78E82F9FD0FBEB9EDCFBF843F737678A9D8F1C5EB9FC407B4379C533DB336BB6ACE969AEAB4F8896AE070E6ED974EC1BEF21B6B6CC5E6325FD4D92A60D13C40639AF7CE7996AC5AA55CC5AC5A855048679736B856394AC85CA5096126A3B82C648CAE7654F0067C6E29EDF449AA873178D8988C66C3A6B5A0FF387B79ABBCD21F327A64640FCBC658E98E7CC29D330911B1186CD881B55E5DA18C2B11929FA6A0583CA8C647224AB906AA16654D555241ACDB3EC0992A18B47B7FD97270162BB1A8960FFF2CC529433605190D4645797FF111A95EA4F8B693C86D66ED9DCDD257B00A99B65124F90F9B9AF2FFDF6CE05478E9C3C752A516E9FF78B63FED71E7F9B7DE7456AEEBCF5D28B375F1B589043CF08583DADB5C2247E3C4172B0691CFC1A2B2452150F279D0D92957282B65889944D13A938109884FD235DA99A7F49D5C4476ACEBFA48A99341A8D9C723169E55FD201EE511AFD4B1C3729ADC82B3DE75CD2CAB9A491DC947349DBB85D69742E0E6ED96C9A9E4BD3F4CA1C1E6C1B9A96DC9739B63BF7566E24379BD372B63A4A5B1DA5AD98D42EF23922E594F0029FE2D35CE33522E57344CAD55CB8C079707CA3E24FAE5C0B67381BBE327B976D840C57E2F37FEC4944AA785E7D4B233255C99CD37CD7F11C66989661E9165814CDCE13C792798206A5543A0C52057A3676ABD36C83F3EC92906A988A8BB11EEB3BF8F1377FB9CA8F8FC5E553AB57BF7CDFD8CFC6567C6F55F7D3ECA7374FBE74EFF2D56B5F39CA7A6F5C8413CD813FBD02272AD8E20962CD5EC3FD7DF031A676864480AA52E873DC68684829B15D23550B4F5DA502F3B11C656CD9BA0D615AB788B00C6A08A2734BA74C6FC1E0D73BCA9726FD4B931095A82170B5F9D3DD3A254DB25720A539B29783EFAD58583078E949B8D2EA157EF1B790CF6BAC90762894C8E44DC50A4941017717C31FB52FAC9002149E3D9FB4F356D14BBAC50AB25CACA7EBD9466B03DF46B7B11DD60EBE9FECA3FBD8016B3FDF2786E9307B2EF6BC79D47A81FF9CBCC15F15EF91B7C5FBE4B4392A3E227F1217C9C7E20BF20F7183CC8805B01C912129D14E5A458F584542C1F530485574D89CCAA8A1D6CE613DB874827A38F4301E0451CC807B81CF9452C55D514F99AEDB7138F98E4B65D81BF84E9627CBA4A3AF4F45433EEC11A66515B948722E488C31507C494A612202D4A16531460D53F018A17A874DED262B0C433EC4193F43F3A7427D48673AD4425E60216D8A7FFE570CCBABB9ECCDC19B83B9CCD5CB8328E050C3F52D45E4EF03D418D61796870F7D30BC3083978D20EB00EBF7DC619940360F6EA4B57A23ED4AA4D28B7B125D94FEFAD6CEDF5F2E3664CA5F4CDC7A4A6BBD7964FBAE753F604721D020D20C42F4D3106981FEAD09426A9116F93F1BF7A5DEC600B3B1F4350C335D9506C3328692B51A7BE052B1E62BA63554C9233B02E32129C71505AB86A0D660CD3598AA015E792D4CDF0E76DFC0D2D0B0E4F83235BB2AE2C068CA590691F451A3551B4CD5202205F1204AA19928556453B5E18AEAA161C04A25E00B517395813E55D383E64F4FDE4EA10912C038521184A1948A51755DE7C76C8745A3C5B1260B76D4706ECCF555C3B9B0036B3254F742C628B1418853C38390716C03E1CB9694694293026F648D8B24A88CC949FFC2A47FBE3C89298A51880A83DCA6FC3CE05D9296B4F9823D2A37CB97650CD7A35CDFB46229AD5691080EBCA1B1E2D7D5B721C77E199E6E68A96886CD13469E67035D239A11E771D70A7C928825CD3A2B1FAF775B48D12C5965B742BACDAF5AF7B90FC5961BA13960F5C79779CBE5A3C1666F4DF0A4F95D6B7B70C0F8A1F97D6BC238EB8D07FF326EF0F6B86C27ED4E9BDBEEB5051DC925A427D8673D67BD117BDD3E4EDF61EFC47F659F22E3C659F7CFDA05E3137E45BBE2FD339831FECDEBE206CED856A5AF4AD788D41C964135B7F3C2F5B48048CBB48AA65774D1C6BA66CCA176D139337B21EC414E7020454BCAAB3A349930445CB68AB25CA7AD115BE44E7950BE2085141A242C1E477430B7B77A5039AA8EF20C7CF0DEBF8CFF91DA834F3E4CC6741D88C1D4B9101684B3F0A504EEED3FA9930044EB23E136E1B9853F4AD32A983208CABA99D475D385732E3A6ED2715C4B7A5E595849E84EF43938218C9A816679D2761D35BD0078D4B24C13F125F03CD7252279DD77E85667B733E4C49C33F478280AAB04DD259E154C9C618F857C95A4BBE4B39249BC8BFB3ADDAAEF06048A01021D3F45AF27AE6F533A383B30333898011D0B1F44A2C1CC6773F0E357FF61E9B40A4D5295C30377A2D2DD1788CA61D7FFC074FDA5F8C53A7EFB471AD66E18730A7681FD6E761ABCCE347167A7C6C822AF00793C4D9754FF36F68F54D66E40F69B1A351751F5A0716DFF48D7EA4DEAE9F4A859889E06F0749E7A0A038D830B80B10109A64E988B70C41364093B1BBD696EF0B97E69D54FCE4E9F1405AD40B001B0952EDBA2463B3F1EF49205F085041F4DF4C28A3656A5C35EC45B7407837470E3DDEAFBFFFD21242B444EA411969B636D31DA7FEBB767DFEDD3BADE9D38D67DFFF86FFEC378B54045719DE1FF9FD9BDE0EC2EB3EC0316D8DD991D981585468EB12896EA6AD5DA9EA8A4F1D8D29C20F59508126BEAA35A54728A39063756AB41F009BE312A3E0011ACA6C6A8C1176A92B6D9154924465D7C845A535DD8ED9D5D8A26A9C7DE3DDFBFFFBD7BEFCCDC6FFFFF9BFF066A1AABFAFC8D4AF4BAB6E826E6F5AEB233E79869FECF98C2DACE0B54AB1D8117D93B54ABE3997C7A0AB2287A65D22AD61CB23121CB87E4599144573FC58B0A8DEA42561B9E112AADA24256172EB3B4DDA2DCE1E242C21FD2DEEEB2C1C6997856C35AE37803D110A3CBC08B1A9756E44367473EAE5F4AFC9578CBB9F838B

                                   

                                   

                                  Really long...

                                  • 14. Re: Parse through a pdf binary string in sql
                                    jrenfrew

                                    That isn't the whole thing... or it is truncated

                                    can you put it into a text file and attach here??

                                     

                                    but to prove this method words, here is the first part of your file, proving it is a PDF, create d by FileMaker

                                    <<Author/CreationDate(D:20160404092811-04'00')/Creator(FileMaker Pro Advanced 14.0.3)

                                     

                                    >>

                                    %PDF-1.6

                                    %âãÏÓ

                                    18 0 obj

                                    <</Filter/FlateDecode/First 9/Length 177/N 2/Type/ObjStm>>stream

                                    hÞ<ŽÍ

                                    ƒ@ „_%OÐìVT ÙC´¥ Äõ& DƒõÐÝâ®`ß¾Q¤‡ aæː „ „¦x¶³ñ ñ1ö® 9( ¬¾ ¢ È)µ!Æ“ñ ¢5Æ'õc{²K-  Ö‰ä‘5NX >›˜…`CKrvž:rÜr]|®}ë‰÷\KñŠ(… ׳— Hv§˜l§É×X\2¬hñxó7ç õ«íG30®o ö ¾ø¬ÔO€  ò?t

                                    endstream

                                    endobj

                                    19 0 obj

                                    <</Filter/FlateDecode/First 4/Length 114/N 1/Type/ObjStm>>stream

                                    hÞ²T0P°±ÑwJ,NuËÏ+Ñ qó   Öv,ÊLÌñ

                                    ÑwI-NNÍKIÌ+ É +  Õ é»æ%ç§dæ¥ë{¦¤æ•d–Têzè —&•T ¤ê‡  ýüмL ¢T CC° °>È ;;€ – &

                                    endstream

                                    1 2 Previous Next