diff --git a/app/App.tsx b/app/App.tsx index fd5ace5dc..d93edbbda 100644 --- a/app/App.tsx +++ b/app/App.tsx @@ -408,7 +408,7 @@ function App(): JSX.Element { // format transaction // for now, we do it all on mumbai try { - const provider = new ethers.JsonRpcProvider('https://polygon-mumbai-bor.publicnode.com'); + const provider = new ethers.JsonRpcProvider('https://gateway.tenderly.co/public/sepolia'); const proofOfPassportOnMumbai = new ethers.Contract(contractAddresses.ProofOfPassport, proofOfPassportArtefact.abi, provider); const transactionRequest = await proofOfPassportOnMumbai @@ -416,7 +416,7 @@ function App(): JSX.Element { console.log('transactionRequest', transactionRequest); const response = await axios.post(AWS_ENDPOINT, { - chain: "mumbai", + chain: "sepolia", tx_data: transactionRequest }); console.log('response status', response.status) diff --git a/app/deployments/Groth16Verifier.json b/app/deployments/Groth16Verifier.json index fc729dd6f..c95cc99c1 100644 --- a/app/deployments/Groth16Verifier.json +++ b/app/deployments/Groth16Verifier.json @@ -38,8 +38,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610b91806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c82febf514610030575b600080fd5b61004a60048036038101906100459190610abc565b610060565b6040516100579190610b40565b60405180910390f35b6000610944565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478110610098576000805260206000f35b50565b600060405183815284602082015285604082015260408160608360076107d05a03fa9150816100ce576000805260206000f35b825160408201526020830151606082015260408360808360066107d05a03fa9150816100fe576000805260206000f35b505050505050565b600060808601600087017f0ad4104ba0cab26e17a390c2297e5930790fe2138c4965fa33a92c6efb1ce61181527f2f25144c009fda8ee383ef224c934e7f6df65425132809ae464ff31ac891734760208201526101a960008801357f22afda344f3fa9caa050472eedf614641a3dc81bffaacd4fbe374447e8713c527f0785808d31f021c38a389a35384e87a0c483cc6665f1fb11fd8cb6220ab68a6c8461009b565b6101f960208801357f11885e413266172e3aee33cfdd2bfa186b52178bcf1cefaea78062c05722107d7f26756d1fcadd13849941c067839540f95b0ee5614c0ea6436a0b1371c61918028461009b565b61024960408801357f14034f89a294ea4bcb70f8a05f38319d25b7876baeeb2a1cf1d953be05023c4f7f014b60dec736fc8ef91c82345c2872f10e4f9e1e2a45419a91dfc6f3bf48a5008461009b565b61029960608801357f15b66475b701246e5afeb0fef2c8b1766992b6c862af6343ff7695defcb466b97f0f7f42f9ce4d9e86b9cde0c0a508655c8c79bc0a684a3fc7e31736926bd3164e8461009b565b6102e860808801357e9f8254f248559f4f9347784214ede9a9aa8f08c8ed859b42c55941f6ebac4d7f1f7aa8bbe543dc53d9efab5d487a2f462881d366f25ddf0d5e38747333195eca8461009b565b61033860a08801357f224f0eea46b164e5fd8793f81110dd606a17a916695f431dd9a82930337be6467f05b94074736f283d880c3adc6ca902dd9509466e817281f32b70103f5b5c426c8461009b565b61038860c08801357f121cf7452967876d6eb025f7713bf8392f39e7d8f82e653fbd7b3a4286f04d8e7f2648cf8ce91f5074123ea29d363f00ff58345fa0cf8854cee6b3cdb9cd06f2518461009b565b6103d860e08801357f207375b930a98fe9cbbeb3eb1fe8cff0ec58733416b0385826b0c5203addb82a7f106036e1ef36d5bcc9419747eb69833e04a8835d8eda804a0ce30273e6511d928461009b565b6104296101008801357f2773127f6766e3dfee9d345806c72cd2892e2b3a7c5f0c9c80a894b8e718dde47f1fab68875dd34949d9531c866809371111b147f288eb3fb0e0c516ae9c4d763e8461009b565b61047a6101208801357f18e0b48b621d672b8afb675eeba9ee68d33a71ac5b84e839b1350ff832e2731d7f10ab6d5e5bbf2815c7b436af60a20c885d0aded20f41b5aff518343aa32fe8e28461009b565b6104cb6101408801357f08534d6feb186a62091134bc726c2a6d0ba479bee663ad9702ef4c5931d454897f1d67bf83c43954992a44732500ee24ca44c594d914e6dd0dd722428250170b668461009b565b61051c6101608801357f18cff185263b89e2d1f0a745c7edcae4a6126402cad1205d90aea5ab53f1da167f147e05d126df37c08cf603b77b624feb87a8d33c333dff3f3e1b886aac27fb778461009b565b61056d6101808801357f01acfec350b849fd019997e649774c9795fff3f4af624586841f42181f252eb87f05be1ef6bbed0f7942c562bd8ceb15491221a5176d4709c58f156f65c51018268461009b565b6105be6101a08801357f0723950b7af06aebfcdab4bf96923795f95ea0fa86454831287358be15bf4a397f23b332764411bcec1aad32817dda66a3bfb502a4a0c92494736137c3f9aa010a8461009b565b61060f6101c08801357f26a47a8df4e6edda06f707b27f3b150bf90cb49d52fa68fbb1f57efc30d642777f18ee382f9056082dd010bb84da6fcdcae6fd0b0a86d9922cba113b823b7b0d118461009b565b6106606101e08801357f1d9ed1b6b90a7f3fd9724dd10b98ccfbde0404ad4dd751ff54949274461fe6ff7f10a9f28b202c0acbeb9b877b5ebe348312df9e093190df0eee947f50ffd5c5288461009b565b833582527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208501357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020830152843560408301526020850135606083015260408501356080830152606085013560a08301527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08301527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08301527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008301527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208301527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408301527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8610160830152600088015161018083015260206000018801516101a08301527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08301527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08301527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008301527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220830152853561024083015260208601356102608301527f0b67b25fb7a77948fa56298f85351f81ea556bf7bebea58cfaf22a41c2add0b16102808301527f125210f527bd6baed1fc4723673927cfcb8bf3c1e6da90e570ffa3926d946e586102a08301527f20286cd5cfcf365bf654135508c3873fb0241ad595b0ba879fb5dd5aaedcccff6102c08301527f200e3e8bf7c87c79b2f15e5b56e823f0798b09832c5b4e73f73b482862c826ea6102e08301526020826103008460086107d05a03fa82518116935050505095945050505050565b604051610380810160405261095c6000840135610067565b6109696020840135610067565b6109766040840135610067565b6109836060840135610067565b6109906080840135610067565b61099d60a0840135610067565b6109aa60c0840135610067565b6109b760e0840135610067565b6109c5610100840135610067565b6109d3610120840135610067565b6109e1610140840135610067565b6109ef610160840135610067565b6109fd610180840135610067565b610a0b6101a0840135610067565b610a196101c0840135610067565b610a276101e0840135610067565b610a35610200840135610067565b610a42818486888a610106565b8060005260206000f35b600080fd5b600080fd5b600081905082602060020282011115610a7257610a71610a51565b5b92915050565b600081905082604060020282011115610a9457610a93610a51565b5b92915050565b600081905082602060100282011115610ab657610ab5610a51565b5b92915050565b6000806000806103008587031215610ad757610ad6610a4c565b5b6000610ae587828801610a56565b9450506040610af687828801610a78565b93505060c0610b0787828801610a56565b925050610100610b1987828801610a9a565b91505092959194509250565b60008115159050919050565b610b3a81610b25565b82525050565b6000602082019050610b556000830184610b31565b9291505056fea2646970667358221220ca8705bfa93a78cf62acae4455e632f0ba4658ce4427955bfbebcd1edea5b56464736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c82febf514610030575b600080fd5b61004a60048036038101906100459190610abc565b610060565b6040516100579190610b40565b60405180910390f35b6000610944565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478110610098576000805260206000f35b50565b600060405183815284602082015285604082015260408160608360076107d05a03fa9150816100ce576000805260206000f35b825160408201526020830151606082015260408360808360066107d05a03fa9150816100fe576000805260206000f35b505050505050565b600060808601600087017f0ad4104ba0cab26e17a390c2297e5930790fe2138c4965fa33a92c6efb1ce61181527f2f25144c009fda8ee383ef224c934e7f6df65425132809ae464ff31ac891734760208201526101a960008801357f22afda344f3fa9caa050472eedf614641a3dc81bffaacd4fbe374447e8713c527f0785808d31f021c38a389a35384e87a0c483cc6665f1fb11fd8cb6220ab68a6c8461009b565b6101f960208801357f11885e413266172e3aee33cfdd2bfa186b52178bcf1cefaea78062c05722107d7f26756d1fcadd13849941c067839540f95b0ee5614c0ea6436a0b1371c61918028461009b565b61024960408801357f14034f89a294ea4bcb70f8a05f38319d25b7876baeeb2a1cf1d953be05023c4f7f014b60dec736fc8ef91c82345c2872f10e4f9e1e2a45419a91dfc6f3bf48a5008461009b565b61029960608801357f15b66475b701246e5afeb0fef2c8b1766992b6c862af6343ff7695defcb466b97f0f7f42f9ce4d9e86b9cde0c0a508655c8c79bc0a684a3fc7e31736926bd3164e8461009b565b6102e860808801357e9f8254f248559f4f9347784214ede9a9aa8f08c8ed859b42c55941f6ebac4d7f1f7aa8bbe543dc53d9efab5d487a2f462881d366f25ddf0d5e38747333195eca8461009b565b61033860a08801357f224f0eea46b164e5fd8793f81110dd606a17a916695f431dd9a82930337be6467f05b94074736f283d880c3adc6ca902dd9509466e817281f32b70103f5b5c426c8461009b565b61038860c08801357f121cf7452967876d6eb025f7713bf8392f39e7d8f82e653fbd7b3a4286f04d8e7f2648cf8ce91f5074123ea29d363f00ff58345fa0cf8854cee6b3cdb9cd06f2518461009b565b6103d860e08801357f207375b930a98fe9cbbeb3eb1fe8cff0ec58733416b0385826b0c5203addb82a7f106036e1ef36d5bcc9419747eb69833e04a8835d8eda804a0ce30273e6511d928461009b565b6104296101008801357f2773127f6766e3dfee9d345806c72cd2892e2b3a7c5f0c9c80a894b8e718dde47f1fab68875dd34949d9531c866809371111b147f288eb3fb0e0c516ae9c4d763e8461009b565b61047a6101208801357f18e0b48b621d672b8afb675eeba9ee68d33a71ac5b84e839b1350ff832e2731d7f10ab6d5e5bbf2815c7b436af60a20c885d0aded20f41b5aff518343aa32fe8e28461009b565b6104cb6101408801357f08534d6feb186a62091134bc726c2a6d0ba479bee663ad9702ef4c5931d454897f1d67bf83c43954992a44732500ee24ca44c594d914e6dd0dd722428250170b668461009b565b61051c6101608801357f18cff185263b89e2d1f0a745c7edcae4a6126402cad1205d90aea5ab53f1da167f147e05d126df37c08cf603b77b624feb87a8d33c333dff3f3e1b886aac27fb778461009b565b61056d6101808801357f01acfec350b849fd019997e649774c9795fff3f4af624586841f42181f252eb87f05be1ef6bbed0f7942c562bd8ceb15491221a5176d4709c58f156f65c51018268461009b565b6105be6101a08801357f0723950b7af06aebfcdab4bf96923795f95ea0fa86454831287358be15bf4a397f23b332764411bcec1aad32817dda66a3bfb502a4a0c92494736137c3f9aa010a8461009b565b61060f6101c08801357f26a47a8df4e6edda06f707b27f3b150bf90cb49d52fa68fbb1f57efc30d642777f18ee382f9056082dd010bb84da6fcdcae6fd0b0a86d9922cba113b823b7b0d118461009b565b6106606101e08801357f1d9ed1b6b90a7f3fd9724dd10b98ccfbde0404ad4dd751ff54949274461fe6ff7f10a9f28b202c0acbeb9b877b5ebe348312df9e093190df0eee947f50ffd5c5288461009b565b833582527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208501357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020830152843560408301526020850135606083015260408501356080830152606085013560a08301527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08301527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08301527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008301527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208301527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408301527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8610160830152600088015161018083015260206000018801516101a08301527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08301527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08301527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008301527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220830152853561024083015260208601356102608301527f0b67b25fb7a77948fa56298f85351f81ea556bf7bebea58cfaf22a41c2add0b16102808301527f125210f527bd6baed1fc4723673927cfcb8bf3c1e6da90e570ffa3926d946e586102a08301527f20286cd5cfcf365bf654135508c3873fb0241ad595b0ba879fb5dd5aaedcccff6102c08301527f200e3e8bf7c87c79b2f15e5b56e823f0798b09832c5b4e73f73b482862c826ea6102e08301526020826103008460086107d05a03fa82518116935050505095945050505050565b604051610380810160405261095c6000840135610067565b6109696020840135610067565b6109766040840135610067565b6109836060840135610067565b6109906080840135610067565b61099d60a0840135610067565b6109aa60c0840135610067565b6109b760e0840135610067565b6109c5610100840135610067565b6109d3610120840135610067565b6109e1610140840135610067565b6109ef610160840135610067565b6109fd610180840135610067565b610a0b6101a0840135610067565b610a196101c0840135610067565b610a276101e0840135610067565b610a35610200840135610067565b610a42818486888a610106565b8060005260206000f35b600080fd5b600080fd5b600081905082602060020282011115610a7257610a71610a51565b5b92915050565b600081905082604060020282011115610a9457610a93610a51565b5b92915050565b600081905082602060100282011115610ab657610ab5610a51565b5b92915050565b6000806000806103008587031215610ad757610ad6610a4c565b5b6000610ae587828801610a56565b9450506040610af687828801610a78565b93505060c0610b0787828801610a56565b925050610100610b1987828801610a9a565b91505092959194509250565b60008115159050919050565b610b3a81610b25565b82525050565b6000602082019050610b556000830184610b31565b9291505056fea2646970667358221220ca8705bfa93a78cf62acae4455e632f0ba4658ce4427955bfbebcd1edea5b56464736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610b91806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c82febf514610030575b600080fd5b61004a60048036038101906100459190610abc565b610060565b6040516100579190610b40565b60405180910390f35b6000610944565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478110610098576000805260206000f35b50565b600060405183815284602082015285604082015260408160608360076107d05a03fa9150816100ce576000805260206000f35b825160408201526020830151606082015260408360808360066107d05a03fa9150816100fe576000805260206000f35b505050505050565b600060808601600087017f0ad4104ba0cab26e17a390c2297e5930790fe2138c4965fa33a92c6efb1ce61181527f2f25144c009fda8ee383ef224c934e7f6df65425132809ae464ff31ac891734760208201526101a960008801357f22afda344f3fa9caa050472eedf614641a3dc81bffaacd4fbe374447e8713c527f0785808d31f021c38a389a35384e87a0c483cc6665f1fb11fd8cb6220ab68a6c8461009b565b6101f960208801357f11885e413266172e3aee33cfdd2bfa186b52178bcf1cefaea78062c05722107d7f26756d1fcadd13849941c067839540f95b0ee5614c0ea6436a0b1371c61918028461009b565b61024960408801357f14034f89a294ea4bcb70f8a05f38319d25b7876baeeb2a1cf1d953be05023c4f7f014b60dec736fc8ef91c82345c2872f10e4f9e1e2a45419a91dfc6f3bf48a5008461009b565b61029960608801357f15b66475b701246e5afeb0fef2c8b1766992b6c862af6343ff7695defcb466b97f0f7f42f9ce4d9e86b9cde0c0a508655c8c79bc0a684a3fc7e31736926bd3164e8461009b565b6102e860808801357e9f8254f248559f4f9347784214ede9a9aa8f08c8ed859b42c55941f6ebac4d7f1f7aa8bbe543dc53d9efab5d487a2f462881d366f25ddf0d5e38747333195eca8461009b565b61033860a08801357f224f0eea46b164e5fd8793f81110dd606a17a916695f431dd9a82930337be6467f05b94074736f283d880c3adc6ca902dd9509466e817281f32b70103f5b5c426c8461009b565b61038860c08801357f121cf7452967876d6eb025f7713bf8392f39e7d8f82e653fbd7b3a4286f04d8e7f2648cf8ce91f5074123ea29d363f00ff58345fa0cf8854cee6b3cdb9cd06f2518461009b565b6103d860e08801357f207375b930a98fe9cbbeb3eb1fe8cff0ec58733416b0385826b0c5203addb82a7f106036e1ef36d5bcc9419747eb69833e04a8835d8eda804a0ce30273e6511d928461009b565b6104296101008801357f2773127f6766e3dfee9d345806c72cd2892e2b3a7c5f0c9c80a894b8e718dde47f1fab68875dd34949d9531c866809371111b147f288eb3fb0e0c516ae9c4d763e8461009b565b61047a6101208801357f18e0b48b621d672b8afb675eeba9ee68d33a71ac5b84e839b1350ff832e2731d7f10ab6d5e5bbf2815c7b436af60a20c885d0aded20f41b5aff518343aa32fe8e28461009b565b6104cb6101408801357f08534d6feb186a62091134bc726c2a6d0ba479bee663ad9702ef4c5931d454897f1d67bf83c43954992a44732500ee24ca44c594d914e6dd0dd722428250170b668461009b565b61051c6101608801357f18cff185263b89e2d1f0a745c7edcae4a6126402cad1205d90aea5ab53f1da167f147e05d126df37c08cf603b77b624feb87a8d33c333dff3f3e1b886aac27fb778461009b565b61056d6101808801357f01acfec350b849fd019997e649774c9795fff3f4af624586841f42181f252eb87f05be1ef6bbed0f7942c562bd8ceb15491221a5176d4709c58f156f65c51018268461009b565b6105be6101a08801357f0723950b7af06aebfcdab4bf96923795f95ea0fa86454831287358be15bf4a397f23b332764411bcec1aad32817dda66a3bfb502a4a0c92494736137c3f9aa010a8461009b565b61060f6101c08801357f26a47a8df4e6edda06f707b27f3b150bf90cb49d52fa68fbb1f57efc30d642777f18ee382f9056082dd010bb84da6fcdcae6fd0b0a86d9922cba113b823b7b0d118461009b565b6106606101e08801357f1d9ed1b6b90a7f3fd9724dd10b98ccfbde0404ad4dd751ff54949274461fe6ff7f10a9f28b202c0acbeb9b877b5ebe348312df9e093190df0eee947f50ffd5c5288461009b565b833582527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208501357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020830152843560408301526020850135606083015260408501356080830152606085013560a08301527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08301527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08301527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008301527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208301527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408301527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8610160830152600088015161018083015260206000018801516101a08301527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08301527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08301527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008301527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220830152853561024083015260208601356102608301527f1d7a1d45cd0d7dc185b008a1db27d49fce51cc6867181bc7cc20b082334bebab6102808301527f30249a46876435e31836541ae970041820f931fcac2965e123310140ced152926102a08301527f22254873bf251351180667cdc810f5bb28fc4367da32e764751a1756c4cc66ed6102c08301527f1b00bcdb0dab39dc3e54fdc18bd323d8468fd0c9f50a45a7ed6d65129185769f6102e08301526020826103008460086107d05a03fa82518116935050505095945050505050565b604051610380810160405261095c6000840135610067565b6109696020840135610067565b6109766040840135610067565b6109836060840135610067565b6109906080840135610067565b61099d60a0840135610067565b6109aa60c0840135610067565b6109b760e0840135610067565b6109c5610100840135610067565b6109d3610120840135610067565b6109e1610140840135610067565b6109ef610160840135610067565b6109fd610180840135610067565b610a0b6101a0840135610067565b610a196101c0840135610067565b610a276101e0840135610067565b610a35610200840135610067565b610a42818486888a610106565b8060005260206000f35b600080fd5b600080fd5b600081905082602060020282011115610a7257610a71610a51565b5b92915050565b600081905082604060020282011115610a9457610a93610a51565b5b92915050565b600081905082602060100282011115610ab657610ab5610a51565b5b92915050565b6000806000806103008587031215610ad757610ad6610a4c565b5b6000610ae587828801610a56565b9450506040610af687828801610a78565b93505060c0610b0787828801610a56565b925050610100610b1987828801610a9a565b91505092959194509250565b60008115159050919050565b610b3a81610b25565b82525050565b6000602082019050610b556000830184610b31565b9291505056fea26469706673582212203182fad1c2c45996256e57e04133b91811fae14bccf65921dacf71742c83784364736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c82febf514610030575b600080fd5b61004a60048036038101906100459190610abc565b610060565b6040516100579190610b40565b60405180910390f35b6000610944565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478110610098576000805260206000f35b50565b600060405183815284602082015285604082015260408160608360076107d05a03fa9150816100ce576000805260206000f35b825160408201526020830151606082015260408360808360066107d05a03fa9150816100fe576000805260206000f35b505050505050565b600060808601600087017f0ad4104ba0cab26e17a390c2297e5930790fe2138c4965fa33a92c6efb1ce61181527f2f25144c009fda8ee383ef224c934e7f6df65425132809ae464ff31ac891734760208201526101a960008801357f22afda344f3fa9caa050472eedf614641a3dc81bffaacd4fbe374447e8713c527f0785808d31f021c38a389a35384e87a0c483cc6665f1fb11fd8cb6220ab68a6c8461009b565b6101f960208801357f11885e413266172e3aee33cfdd2bfa186b52178bcf1cefaea78062c05722107d7f26756d1fcadd13849941c067839540f95b0ee5614c0ea6436a0b1371c61918028461009b565b61024960408801357f14034f89a294ea4bcb70f8a05f38319d25b7876baeeb2a1cf1d953be05023c4f7f014b60dec736fc8ef91c82345c2872f10e4f9e1e2a45419a91dfc6f3bf48a5008461009b565b61029960608801357f15b66475b701246e5afeb0fef2c8b1766992b6c862af6343ff7695defcb466b97f0f7f42f9ce4d9e86b9cde0c0a508655c8c79bc0a684a3fc7e31736926bd3164e8461009b565b6102e860808801357e9f8254f248559f4f9347784214ede9a9aa8f08c8ed859b42c55941f6ebac4d7f1f7aa8bbe543dc53d9efab5d487a2f462881d366f25ddf0d5e38747333195eca8461009b565b61033860a08801357f224f0eea46b164e5fd8793f81110dd606a17a916695f431dd9a82930337be6467f05b94074736f283d880c3adc6ca902dd9509466e817281f32b70103f5b5c426c8461009b565b61038860c08801357f121cf7452967876d6eb025f7713bf8392f39e7d8f82e653fbd7b3a4286f04d8e7f2648cf8ce91f5074123ea29d363f00ff58345fa0cf8854cee6b3cdb9cd06f2518461009b565b6103d860e08801357f207375b930a98fe9cbbeb3eb1fe8cff0ec58733416b0385826b0c5203addb82a7f106036e1ef36d5bcc9419747eb69833e04a8835d8eda804a0ce30273e6511d928461009b565b6104296101008801357f2773127f6766e3dfee9d345806c72cd2892e2b3a7c5f0c9c80a894b8e718dde47f1fab68875dd34949d9531c866809371111b147f288eb3fb0e0c516ae9c4d763e8461009b565b61047a6101208801357f18e0b48b621d672b8afb675eeba9ee68d33a71ac5b84e839b1350ff832e2731d7f10ab6d5e5bbf2815c7b436af60a20c885d0aded20f41b5aff518343aa32fe8e28461009b565b6104cb6101408801357f08534d6feb186a62091134bc726c2a6d0ba479bee663ad9702ef4c5931d454897f1d67bf83c43954992a44732500ee24ca44c594d914e6dd0dd722428250170b668461009b565b61051c6101608801357f18cff185263b89e2d1f0a745c7edcae4a6126402cad1205d90aea5ab53f1da167f147e05d126df37c08cf603b77b624feb87a8d33c333dff3f3e1b886aac27fb778461009b565b61056d6101808801357f01acfec350b849fd019997e649774c9795fff3f4af624586841f42181f252eb87f05be1ef6bbed0f7942c562bd8ceb15491221a5176d4709c58f156f65c51018268461009b565b6105be6101a08801357f0723950b7af06aebfcdab4bf96923795f95ea0fa86454831287358be15bf4a397f23b332764411bcec1aad32817dda66a3bfb502a4a0c92494736137c3f9aa010a8461009b565b61060f6101c08801357f26a47a8df4e6edda06f707b27f3b150bf90cb49d52fa68fbb1f57efc30d642777f18ee382f9056082dd010bb84da6fcdcae6fd0b0a86d9922cba113b823b7b0d118461009b565b6106606101e08801357f1d9ed1b6b90a7f3fd9724dd10b98ccfbde0404ad4dd751ff54949274461fe6ff7f10a9f28b202c0acbeb9b877b5ebe348312df9e093190df0eee947f50ffd5c5288461009b565b833582527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208501357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020830152843560408301526020850135606083015260408501356080830152606085013560a08301527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08301527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08301527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008301527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208301527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408301527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8610160830152600088015161018083015260206000018801516101a08301527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08301527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08301527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008301527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220830152853561024083015260208601356102608301527f1d7a1d45cd0d7dc185b008a1db27d49fce51cc6867181bc7cc20b082334bebab6102808301527f30249a46876435e31836541ae970041820f931fcac2965e123310140ced152926102a08301527f22254873bf251351180667cdc810f5bb28fc4367da32e764751a1756c4cc66ed6102c08301527f1b00bcdb0dab39dc3e54fdc18bd323d8468fd0c9f50a45a7ed6d65129185769f6102e08301526020826103008460086107d05a03fa82518116935050505095945050505050565b604051610380810160405261095c6000840135610067565b6109696020840135610067565b6109766040840135610067565b6109836060840135610067565b6109906080840135610067565b61099d60a0840135610067565b6109aa60c0840135610067565b6109b760e0840135610067565b6109c5610100840135610067565b6109d3610120840135610067565b6109e1610140840135610067565b6109ef610160840135610067565b6109fd610180840135610067565b610a0b6101a0840135610067565b610a196101c0840135610067565b610a276101e0840135610067565b610a35610200840135610067565b610a42818486888a610106565b8060005260206000f35b600080fd5b600080fd5b600081905082602060020282011115610a7257610a71610a51565b5b92915050565b600081905082604060020282011115610a9457610a93610a51565b5b92915050565b600081905082602060100282011115610ab657610ab5610a51565b5b92915050565b6000806000806103008587031215610ad757610ad6610a4c565b5b6000610ae587828801610a56565b9450506040610af687828801610a78565b93505060c0610b0787828801610a56565b925050610100610b1987828801610a9a565b91505092959194509250565b60008115159050919050565b610b3a81610b25565b82525050565b6000602082019050610b556000830184610b31565b9291505056fea26469706673582212203182fad1c2c45996256e57e04133b91811fae14bccf65921dacf71742c83784364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/app/deployments/ProofOfPassport.json b/app/deployments/ProofOfPassport.json index 59c58c157..df6173c1a 100644 --- a/app/deployments/ProofOfPassport.json +++ b/app/deployments/ProofOfPassport.json @@ -648,8 +648,8 @@ "type": "function" } ], - "bytecode": "0x60a06040526000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200005357600080fd5b5060405162006ad838038062006ad88339818101604052810190620000799190620009d1565b6040518060400160405280600f81526020017f50726f6f664f6650617373706f727400000000000000000000000000000000008152506040518060400160405280600f81526020017f50726f6f664f6650617373706f727400000000000000000000000000000000008152508160009081620000f6919062000c92565b50806001908162000108919062000c92565b5050506200012b6200011f620001c960201b60201c565b620001d160201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001b06200029760201b60201c565b620001c133620007bd60201b60201c565b505062000e94565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600e60405180608001604052806040518060400160405280600d81526020017f69737375696e675f7374617465000000000000000000000000000000000000008152508152602001600281526020016004815260200160008152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000332919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600481526020017f6e616d6500000000000000000000000000000000000000000000000000000000815250815260200160058152602001602b8152602001600181525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620003ee919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600f81526020017f70617373706f72745f6e756d62657200000000000000000000000000000000008152508152602001602c815260200160348152602001600281525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620004aa919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600b81526020017f6e6174696f6e616c6974790000000000000000000000000000000000000000008152508152602001603681526020016038815260200160038152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000566919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600d81526020017f646174655f6f665f626972746800000000000000000000000000000000000000815250815260200160398152602001603e815260200160048152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000622919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600681526020017f67656e646572000000000000000000000000000000000000000000000000000081525081526020016040815260200160408152602001600581525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620006de919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600b81526020017f6578706972795f64617465000000000000000000000000000000000000000000815250815260200160418152602001604681526020016006815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000190816200079a919062000c92565b506020820151816001015560408201518160020155606082015181600301555050565b620007cd6200085360201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200083f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008369062000e00565b60405180910390fd5b6200085081620001d160201b60201c565b50565b62000863620001c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000889620008e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d99062000e72565b60405180910390fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009408262000913565b9050919050565b6000620009548262000933565b9050919050565b620009668162000947565b81146200097257600080fd5b50565b60008151905062000986816200095b565b92915050565b6000620009998262000933565b9050919050565b620009ab816200098c565b8114620009b757600080fd5b50565b600081519050620009cb81620009a0565b92915050565b60008060408385031215620009eb57620009ea6200090e565b5b6000620009fb8582860162000975565b925050602062000a0e85828601620009ba565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9a57607f821691505b60208210810362000ab05762000aaf62000a52565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000adb565b62000b26868362000adb565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7362000b6d62000b678462000b3e565b62000b48565b62000b3e565b9050919050565b6000819050919050565b62000b8f8362000b52565b62000ba762000b9e8262000b7a565b84845462000ae8565b825550505050565b600090565b62000bbe62000baf565b62000bcb81848462000b84565b505050565b5b8181101562000bf35762000be760008262000bb4565b60018101905062000bd1565b5050565b601f82111562000c425762000c0c8162000ab6565b62000c178462000acb565b8101602085101562000c27578190505b62000c3f62000c368562000acb565b83018262000bd0565b50505b505050565b600082821c905092915050565b600062000c676000198460080262000c47565b1980831691505092915050565b600062000c82838362000c54565b9150826002028217905092915050565b62000c9d8262000a18565b67ffffffffffffffff81111562000cb95762000cb862000a23565b5b62000cc5825462000a81565b62000cd282828562000bf7565b600060209050601f83116001811462000d0a576000841562000cf5578287015190505b62000d01858262000c74565b86555062000d71565b601f19841662000d1a8662000ab6565b60005b8281101562000d445784890151825560018201915060208501945060208101905062000d1d565b8683101562000d64578489015162000d60601f89168262000c54565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062000de860268362000d79565b915062000df58262000d8a565b604082019050919050565b6000602082019050818103600083015262000e1b8162000dd9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e5a60208362000d79565b915062000e678262000e22565b602082019050919050565b6000602082019050818103600083015262000e8d8162000e4b565b9050919050565b608051615c2162000eb7600039600081816108db01526114ee0152615c216000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a611610104578063c87b56dd116100a2578063dc54daf011610071578063dc54daf014610569578063e985e9c514610599578063eba11e05146105c9578063f2fde38b146105e7576101cf565b8063c87b56dd146104bd578063d21e82ab146104ed578063d4d9c00f1461051d578063d9548e5314610539576101cf565b806395d89b41116100de57806395d89b4114610434578063a22cb46514610452578063b04e3a3b1461046e578063b88d4fde146104a1576101cf565b8063715018a6146103dc57806376e6a447146103e65780638da5cb5b14610416576101cf565b80632f745c59116101715780634f6ccce71161014b5780634f6ccce71461033057806354f96d52146103605780636352211e1461037c57806370a08231146103ac576101cf565b80632f745c59146102c65780633a41515f146102f657806342842e0e14610314576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806318160ddd1461026e57806323b872dd1461028c5780632b7ac3f3146102a8576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e991906134d8565b610603565b6040516101fb9190613520565b60405180910390f35b61020c61067d565b60405161021991906135cb565b60405180910390f35b61023c60048036038101906102379190613623565b61070f565b6040516102499190613691565b60405180910390f35b61026c600480360381019061026791906136d8565b610755565b005b61027661086c565b6040516102839190613727565b60405180910390f35b6102a660048036038101906102a19190613742565b610879565b005b6102b06108d9565b6040516102bd91906137f4565b60405180910390f35b6102e060048036038101906102db91906136d8565b6108fd565b6040516102ed9190613727565b60405180910390f35b6102fe6109a2565b60405161030b9190613830565b60405180910390f35b61032e60048036038101906103299190613742565b6109c8565b005b61034a60048036038101906103459190613623565b6109e8565b6040516103579190613727565b60405180910390f35b61037a6004803603810190610375919061384b565b610a59565b005b61039660048036038101906103919190613623565b610aa5565b6040516103a39190613691565b60405180910390f35b6103c660048036038101906103c1919061384b565b610b2b565b6040516103d39190613727565b60405180910390f35b6103e4610be2565b005b61040060048036038101906103fb91906139ae565b610bf6565b60405161040d9190613a87565b60405180910390f35b61041e610c63565b60405161042b9190613691565b60405180910390f35b61043c610c8d565b60405161044991906135cb565b60405180910390f35b61046c60048036038101906104679190613ace565b610d1f565b005b61048860048036038101906104839190613623565b610d35565b6040516104989493929190613b0e565b60405180910390f35b6104bb60048036038101906104b69190613c0f565b610dfd565b005b6104d760048036038101906104d29190613623565b610e5f565b6040516104e491906135cb565b60405180910390f35b61050760048036038101906105029190613623565b6114cc565b6040516105149190613520565b60405180910390f35b61053760048036038101906105329190613df4565b6114ec565b005b610553600480360381019061054e9190613623565b611971565b6040516105609190613520565b60405180910390f35b610583600480360381019061057e9190613f0e565b611b23565b6040516105909190613f90565b60405180910390f35b6105b360048036038101906105ae9190613fb2565b611c83565b6040516105c09190613520565b60405180910390f35b6105d1611d17565b6040516105de9190613691565b60405180910390f35b61060160048036038101906105fc919061384b565b611d3d565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610676575061067582611dc0565b5b9050919050565b60606000805461068c90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546106b890614021565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061071a82611ea2565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076082610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c7906140c4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107ef611eed565b73ffffffffffffffffffffffffffffffffffffffff16148061081e575061081d81610818611eed565b611c83565b5b61085d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085490614156565b60405180910390fd5b6108678383611ef5565b505050565b6000600880549050905090565b61088a610884611eed565b82611fae565b6108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c0906141e8565b60405180910390fd5b6108d4838383612043565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090883610b2b565b8210610949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109409061427a565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e383838360405180602001604052806000815250610dfd565b505050565b60006109f261086c565b8210610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a9061430c565b60405180910390fd5b60088281548110610a4757610a4661432c565b5b90600052602060002001549050919050565b610a6161233c565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610ab1836123ba565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b19906143a7565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290614439565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bea61233c565b610bf460006123f7565b565b610bfe61344a565b610c0661344a565b60005b6003811015610c5957838160108110610c2557610c2461432c565b5b6020020151828260038110610c3d57610c3c61432c565b5b6020020181815250508080610c5190614488565b915050610c09565b5080915050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c9c90614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc890614021565b8015610d155780601f10610cea57610100808354040283529160200191610d15565b820191906000526020600020905b815481529060010190602001808311610cf857829003601f168201915b5050505050905090565b610d31610d2a611eed565b83836124bd565b5050565b600e8181548110610d4557600080fd5b9060005260206000209060040201600091509050806000018054610d6890614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9490614021565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050908060010154908060020154908060030154905084565b610e0e610e08611eed565b83611fae565b610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e44906141e8565b60405180910390fd5b610e5984848484612629565b50505050565b6060610e6a82612685565b610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea090614542565b60405180910390fd5b6000600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015610f88578382018054610efb90614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2790614021565b8015610f745780601f10610f4957610100808354040283529160200191610f74565b820191906000526020600020905b815481529060010190602001808311610f5757829003601f168201915b505050505081526020019060010190610ee5565b50505050815250509050610fed6040518060400160405280601981526020017f49737375696e6720737461746520696e20746f6b656e555249000000000000008152508260000151600060078110610fe357610fe261432c565b5b60200201516126c6565b606080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630903cd0284600001516001600781106110465761104561432c565b5b60200201516040518263ffffffff1660e01b815260040161106791906135cb565b600060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906110ad9190614603565b80925081935050506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed856000015160006007811061110d5761110c61432c565b5b60200201516040518263ffffffff1660e01b815260040161112e91906135cb565b600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611174919061467b565b8383866000015160026007811061118e5761118d61432c565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed89600001516003600781106111e9576111e861432c565b5b60200201516040518263ffffffff1660e01b815260040161120a91906135cb565b600060405180830381865afa158015611227573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611250919061467b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8a600001516004600781106112a6576112a561432c565b5b60200201516040518263ffffffff1660e01b81526004016112c791906135cb565b600060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130d919061467b565b89600001516005600781106113255761132461432c565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8c600001516006600781106113805761137f61432c565b5b60200201516040518263ffffffff1660e01b81526004016113a191906135cb565b600060405180830381865afa1580156113be573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113e7919061467b565b6113f08e611971565b61142f576040518060400160405280600281526020017f4e6f000000000000000000000000000000000000000000000000000000000000815250611466565b6040518060400160405280600381526020017f59657300000000000000000000000000000000000000000000000000000000008152505b61146f8f612762565b6040516020016114889a99989796959493929190614d16565b60405160208183030381529060405290506114a281612830565b6040516020016114b29190614e88565b604051602081830303815290604052945050505050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c82febf5858585856040518563ffffffff1660e01b815260040161154b94939291906150b0565b602060405180830381865afa158015611568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158c919061510c565b6115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290615185565b60405180910390fd5b600081600160106115dc91906151a5565b601081106115ed576115ec61432c565b5b6020020151905060006115fe61086c565b905061160a82826129b4565b6001600d6000856003601081106116245761162361432c565b5b6020020151815260200190815260200160002060006101000a81548160ff021916908315150217905550600061165984610bf6565b9050600061166682611b23565b90506000600f6000858152602001908152602001600020905060005b600e80549050811015611965576000600e82815481106116a5576116a461432c565b5b90600052602060002090600402016040518060800160405290816000820180546116ce90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546116fa90614021565b80156117475780601f1061171c57610100808354040283529160200191611747565b820191906000526020600020905b81548152906001019060200180831161172a57829003601f168201915b5050505050815260200160018201548152602001600282015481526020016003820154815250509050600060018260200151836040015161178891906151a5565b61179291906151d9565b67ffffffffffffffff8111156117ab576117aa61387d565b5b6040519080825280601f01601f1916602001820160405280156117dd5781602001600182028036833780820191505090505b5090506000826020015190505b82604001518111611877578581815181106118085761180761432c565b5b602001015160f81c60f81b8284602001518361182491906151a5565b815181106118355761183461432c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061186f90614488565b9150506117ea565b506000819050808560000185600781106118945761189361432c565b5b0190816118a191906153af565b5061194f83600001518660000186600781106118c0576118bf61432c565b5b0180546118cc90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546118f890614021565b80156119455780601f1061191a57610100808354040283529160200191611945565b820191906000526020600020905b81548152906001019060200180831161192857829003601f168201915b50505050506126c6565b505050808061195d90614488565b915050611682565b50505050505050505050565b600080600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015611a515783820180546119c490614021565b80601f01602080910402602001604051908101604052809291908181526020018280546119f090614021565b8015611a3d5780601f10611a1257610100808354040283529160200191611a3d565b820191906000526020600020905b815481529060010190602001808311611a2057829003601f168201915b5050505050815260200190600101906119ae565b505050508152505090506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc0bb5d48360000151600660078110611ab357611ab261432c565b5b60200201516040518263ffffffff1660e01b8152600401611ad491906135cb565b602060405180830381865afa158015611af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b159190615496565b905080421192505050919050565b606060006040518060600160405280601f60ff168152602001601f60ff168152602001601a60ff1681525090506000605867ffffffffffffffff811115611b6d57611b6c61387d565b5b6040519080825280601f01601f191660200182016040528015611b9f5781602001600182028036833780820191505090505b5090506000805b6003811015611c77576000868260038110611bc457611bc361432c565b5b6020020151905060005b858360038110611be157611be061432c565b5b602002015160ff168160ff161015611c625760ff821660f81b858580611c0690614488565b965081518110611c1957611c1861432c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600882901c91508080611c5a906154d0565b915050611bce565b50508080611c6f90614488565b915050611ba6565b50819350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d4561233c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab9061556b565b60405180910390fd5b611dbd816123f7565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e8b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e9b5750611e9a82612bd1565b5b9050919050565b611eab81612685565b611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee1906143a7565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611f6883610aa5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611fba83610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ffc5750611ffb8185611c83565b5b8061203a57508373ffffffffffffffffffffffffffffffffffffffff166120228461070f565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661206382610aa5565b73ffffffffffffffffffffffffffffffffffffffff16146120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b0906155fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211f9061568f565b60405180910390fd5b6121358383836001612c3b565b8273ffffffffffffffffffffffffffffffffffffffff1661215582610aa5565b73ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a2906155fd565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123378383836001612cbc565b505050565b612344611eed565b73ffffffffffffffffffffffffffffffffffffffff16612362610c63565b73ffffffffffffffffffffffffffffffffffffffff16146123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af906156fb565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290615767565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161261c9190613520565b60405180910390a3505050565b612634848484612043565b61264084848484612cc2565b61267f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612676906157f9565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff166126a7836123ba565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61275e82826040516024016126dc929190615819565b6040516020818303038152906040527f4b5c4277000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612e49565b5050565b60606000600161277184612e6a565b01905060008167ffffffffffffffff8111156127905761278f61387d565b5b6040519080825280601f01601f1916602001820160405280156127c25781602001600182028036833780820191505090505b509050600082602001820190505b600115612825578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161281957612818615850565b5b049450600085036127d0575b819350505050919050565b60606000825103612852576040518060200160405280600081525090506129af565b6000604051806060016040528060408152602001615bac604091399050600060036002855161288191906151d9565b61288b919061587f565b600461289791906158b0565b905060006020826128a891906151d9565b67ffffffffffffffff8111156128c1576128c061387d565b5b6040519080825280601f01601f1916602001820160405280156128f35781602001600182028036833780820191505090505b509050818152600183018586518101602084015b8183101561296e576003830192508251603f8160121c1685015160f81b8252600182019150603f81600c1c1685015160f81b8252600182019150603f8160061c1685015160f81b8252600182019150603f811685015160f81b825260018201915050612907565b6003895106600181146129885760028114612998576129a3565b613d3d60f01b60028303526129a3565b603d60f81b60018303525b50505050508093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1a9061593e565b60405180910390fd5b612a2c81612685565b15612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a63906159aa565b60405180910390fd5b612a7a600083836001612c3b565b612a8381612685565b15612ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aba906159aa565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612bcd600083836001612cbc565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612c4784848484612fbd565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cad90615a3c565b60405180910390fd5b50505050565b50505050565b6000612ce38473ffffffffffffffffffffffffffffffffffffffff1661311b565b15612e3c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d0c611eed565b8786866040518563ffffffff1660e01b8152600401612d2e9493929190615a5c565b6020604051808303816000875af1925050508015612d6a57506040513d601f19601f82011682018060405250810190612d679190615abd565b60015b612dec573d8060008114612d9a576040519150601f19603f3d011682016040523d82523d6000602084013e612d9f565b606091505b506000815103612de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb906157f9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e41565b600190505b949350505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612ec8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612ebe57612ebd615850565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612f05576d04ee2d6d415b85acef81000000008381612efb57612efa615850565b5b0492506020810190505b662386f26fc100008310612f3457662386f26fc100008381612f2a57612f29615850565b5b0492506010810190505b6305f5e1008310612f5d576305f5e1008381612f5357612f52615850565b5b0492506008810190505b6127108310612f82576127108381612f7857612f77615850565b5b0492506004810190505b60648310612fa55760648381612f9b57612f9a615850565b5b0492506002810190505b600a8310612fb4576001810190505b80915050919050565b612fc98484848461313e565b600181111561300d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300490615b5c565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130545761304f81613144565b613093565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461309257613091858261318d565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036130d5576130d0816132fa565b613114565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146131135761311284826133cb565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161319a84610b2b565b6131a491906151a5565b9050600060076000848152602001908152602001600020549050818114613289576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061330e91906151a5565b905060006009600084815260200190815260200160002054905060006008838154811061333e5761333d61432c565b5b9060005260206000200154905080600883815481106133605761335f61432c565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806133af576133ae615b7c565b5b6001900381819060005260206000200160009055905550505050565b60006133d683610b2b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6040518060600160405280600390602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6134b581613480565b81146134c057600080fd5b50565b6000813590506134d2816134ac565b92915050565b6000602082840312156134ee576134ed613476565b5b60006134fc848285016134c3565b91505092915050565b60008115159050919050565b61351a81613505565b82525050565b60006020820190506135356000830184613511565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561357557808201518184015260208101905061355a565b60008484015250505050565b6000601f19601f8301169050919050565b600061359d8261353b565b6135a78185613546565b93506135b7818560208601613557565b6135c081613581565b840191505092915050565b600060208201905081810360008301526135e58184613592565b905092915050565b6000819050919050565b613600816135ed565b811461360b57600080fd5b50565b60008135905061361d816135f7565b92915050565b60006020828403121561363957613638613476565b5b60006136478482850161360e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061367b82613650565b9050919050565b61368b81613670565b82525050565b60006020820190506136a66000830184613682565b92915050565b6136b581613670565b81146136c057600080fd5b50565b6000813590506136d2816136ac565b92915050565b600080604083850312156136ef576136ee613476565b5b60006136fd858286016136c3565b925050602061370e8582860161360e565b9150509250929050565b613721816135ed565b82525050565b600060208201905061373c6000830184613718565b92915050565b60008060006060848603121561375b5761375a613476565b5b6000613769868287016136c3565b935050602061377a868287016136c3565b925050604061378b8682870161360e565b9150509250925092565b6000819050919050565b60006137ba6137b56137b084613650565b613795565b613650565b9050919050565b60006137cc8261379f565b9050919050565b60006137de826137c1565b9050919050565b6137ee816137d3565b82525050565b600060208201905061380960008301846137e5565b92915050565b600061381a826137c1565b9050919050565b61382a8161380f565b82525050565b60006020820190506138456000830184613821565b92915050565b60006020828403121561386157613860613476565b5b600061386f848285016136c3565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138b582613581565b810181811067ffffffffffffffff821117156138d4576138d361387d565b5b80604052505050565b60006138e761346c565b90506138f382826138ac565b919050565b600067ffffffffffffffff8211156139135761391261387d565b5b602082029050919050565b600080fd5b6000613936613931846138f8565b6138dd565b905080602084028301858111156139505761394f61391e565b5b835b818110156139795780613965888261360e565b845260208401935050602081019050613952565b5050509392505050565b600082601f83011261399857613997613878565b5b60106139a5848285613923565b91505092915050565b600061020082840312156139c5576139c4613476565b5b60006139d384828501613983565b91505092915050565b600060039050919050565b600081905092915050565b6000819050919050565b613a05816135ed565b82525050565b6000613a1783836139fc565b60208301905092915050565b6000602082019050919050565b613a39816139dc565b613a4381846139e7565b9250613a4e826139f2565b8060005b83811015613a7f578151613a668782613a0b565b9650613a7183613a23565b925050600181019050613a52565b505050505050565b6000606082019050613a9c6000830184613a30565b92915050565b613aab81613505565b8114613ab657600080fd5b50565b600081359050613ac881613aa2565b92915050565b60008060408385031215613ae557613ae4613476565b5b6000613af3858286016136c3565b9250506020613b0485828601613ab9565b9150509250929050565b60006080820190508181036000830152613b288187613592565b9050613b376020830186613718565b613b446040830185613718565b613b516060830184613718565b95945050505050565b600080fd5b600067ffffffffffffffff821115613b7a57613b7961387d565b5b613b8382613581565b9050602081019050919050565b82818337600083830152505050565b6000613bb2613bad84613b5f565b6138dd565b905082815260208101848484011115613bce57613bcd613b5a565b5b613bd9848285613b90565b509392505050565b600082601f830112613bf657613bf5613878565b5b8135613c06848260208601613b9f565b91505092915050565b60008060008060808587031215613c2957613c28613476565b5b6000613c37878288016136c3565b9450506020613c48878288016136c3565b9350506040613c598782880161360e565b925050606085013567ffffffffffffffff811115613c7a57613c7961347b565b5b613c8687828801613be1565b91505092959194509250565b600067ffffffffffffffff821115613cad57613cac61387d565b5b602082029050919050565b6000613ccb613cc684613c92565b6138dd565b90508060208402830185811115613ce557613ce461391e565b5b835b81811015613d0e5780613cfa888261360e565b845260208401935050602081019050613ce7565b5050509392505050565b600082601f830112613d2d57613d2c613878565b5b6002613d3a848285613cb8565b91505092915050565b600067ffffffffffffffff821115613d5e57613d5d61387d565b5b602082029050919050565b6000613d7c613d7784613d43565b6138dd565b90508060408402830185811115613d9657613d9561391e565b5b835b81811015613dbf5780613dab8882613d18565b845260208401935050604081019050613d98565b5050509392505050565b600082601f830112613dde57613ddd613878565b5b6002613deb848285613d69565b91505092915050565b6000806000806103008587031215613e0f57613e0e613476565b5b6000613e1d87828801613d18565b9450506040613e2e87828801613dc9565b93505060c0613e3f87828801613d18565b925050610100613e5187828801613983565b91505092959194509250565b600067ffffffffffffffff821115613e7857613e7761387d565b5b602082029050919050565b6000613e96613e9184613e5d565b6138dd565b90508060208402830185811115613eb057613eaf61391e565b5b835b81811015613ed95780613ec5888261360e565b845260208401935050602081019050613eb2565b5050509392505050565b600082601f830112613ef857613ef7613878565b5b6003613f05848285613e83565b91505092915050565b600060608284031215613f2457613f23613476565b5b6000613f3284828501613ee3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000613f6282613f3b565b613f6c8185613f46565b9350613f7c818560208601613557565b613f8581613581565b840191505092915050565b60006020820190508181036000830152613faa8184613f57565b905092915050565b60008060408385031215613fc957613fc8613476565b5b6000613fd7858286016136c3565b9250506020613fe8858286016136c3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061403957607f821691505b60208210810361404c5761404b613ff2565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006140ae602183613546565b91506140b982614052565b604082019050919050565b600060208201905081810360008301526140dd816140a1565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000614140603d83613546565b915061414b826140e4565b604082019050919050565b6000602082019050818103600083015261416f81614133565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006141d2602d83613546565b91506141dd82614176565b604082019050919050565b60006020820190508181036000830152614201816141c5565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614264602b83613546565b915061426f82614208565b604082019050919050565b6000602082019050818103600083015261429381614257565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006142f6602c83613546565b91506143018261429a565b604082019050919050565b60006020820190508181036000830152614325816142e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000614391601883613546565b915061439c8261435b565b602082019050919050565b600060208201905081810360008301526143c081614384565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614423602983613546565b915061442e826143c7565b604082019050919050565b6000602082019050818103600083015261445281614416565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614493826135ed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144c5576144c4614459565b5b600182019050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061452c602f83613546565b9150614537826144d0565b604082019050919050565b6000602082019050818103600083015261455b8161451f565b9050919050565b600067ffffffffffffffff82111561457d5761457c61387d565b5b61458682613581565b9050602081019050919050565b60006145a66145a184614562565b6138dd565b9050828152602081018484840111156145c2576145c1613b5a565b5b6145cd848285613557565b509392505050565b600082601f8301126145ea576145e9613878565b5b81516145fa848260208601614593565b91505092915050565b6000806040838503121561461a57614619613476565b5b600083015167ffffffffffffffff8111156146385761463761347b565b5b614644858286016145d5565b925050602083015167ffffffffffffffff8111156146655761466461347b565b5b614671858286016145d5565b9150509250929050565b60006020828403121561469157614690613476565b5b600082015167ffffffffffffffff8111156146af576146ae61347b565b5b6146bb848285016145d5565b91505092915050565b600081905092915050565b7f7b202261747472696275746573223a205b000000000000000000000000000000600082015250565b60006147056011836146c4565b9150614710826146cf565b601182019050919050565b7f7b2274726169745f74797065223a202249737375696e67205374617465222c2060008201527f2276616c7565223a202200000000000000000000000000000000000000000000602082015250565b6000614777602a836146c4565b91506147828261471b565b602a82019050919050565b60006147988261353b565b6147a281856146c4565b93506147b2818560208601613557565b80840191505092915050565b7f227d2c7b2274726169745f74797065223a202246697273744e616d65222c202260008201527f76616c7565223a20220000000000000000000000000000000000000000000000602082015250565b600061481a6029836146c4565b9150614825826147be565b602982019050919050565b7f227d2c7b2274726169745f74797065223a20224c6173744e616d65222c20227660008201527f616c7565223a2022000000000000000000000000000000000000000000000000602082015250565b600061488c6028836146c4565b915061489782614830565b602882019050919050565b7f227d2c7b2274726169745f74797065223a202250617373706f7274204e756d6260008201527f6572222c202276616c7565223a20220000000000000000000000000000000000602082015250565b60006148fe602f836146c4565b9150614909826148a2565b602f82019050919050565b7f227d2c7b2274726169745f74797065223a20224e6174696f6e616c697479222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614970602b836146c4565b915061497b82614914565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202244617465206f6620626972746860008201527f222c202276616c7565223a202200000000000000000000000000000000000000602082015250565b60006149e2602d836146c4565b91506149ed82614986565b602d82019050919050565b7f227d2c7b2274726169745f74797065223a202247656e646572222c202276616c60008201527f7565223a20220000000000000000000000000000000000000000000000000000602082015250565b6000614a546026836146c4565b9150614a5f826149f8565b602682019050919050565b7f227d2c7b2274726169745f74797065223a20224578706972792064617465222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614ac6602b836146c4565b9150614ad182614a6a565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202245787069726564222c2022766160008201527f6c7565223a202200000000000000000000000000000000000000000000000000602082015250565b6000614b386027836146c4565b9150614b4382614adc565b602782019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614b846002836146c4565b9150614b8f82614b4e565b600282019050919050565b7f5d2c000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bd06002836146c4565b9150614bdb82614b9a565b600282019050919050565b7f226465736372697074696f6e223a202250726f6f66206f662050617373706f7260008201527f742067756172616e7465657320706f7373657373696f6e206f6620612076616c60208201527f69642070617373706f72742e222c2265787465726e616c5f75726c223a20226860408201527f747470733a2f2f6769746875622e636f6d2f7a6b2d70617373706f72742f707260608201527f6f6f662d6f662d70617373706f7274222c22696d616765223a2022687474707360808201527f3a2f2f692e696d6775722e636f6d2f396b766574696a2e706e67222c226e616d60a08201527f65223a202250726f6f66206f662050617373706f72742023000000000000000060c082015250565b6000614d0060d8836146c4565b9150614d0b82614be6565b60d882019050919050565b6000614d21826146f8565b9150614d2c8261476a565b9150614d38828d61478d565b9150614d438261480d565b9150614d4f828c61478d565b9150614d5a8261487f565b9150614d66828b61478d565b9150614d71826148f1565b9150614d7d828a61478d565b9150614d8882614963565b9150614d94828961478d565b9150614d9f826149d5565b9150614dab828861478d565b9150614db682614a47565b9150614dc2828761478d565b9150614dcd82614ab9565b9150614dd9828661478d565b9150614de482614b2b565b9150614df0828561478d565b9150614dfb82614b77565b9150614e0682614bc3565b9150614e1182614cf3565b9150614e1d828461478d565b9150614e2882614b77565b91508190509b9a5050505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614e72601d836146c4565b9150614e7d82614e3c565b601d82019050919050565b6000614e9382614e65565b9150614e9f828461478d565b915081905092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b614ee081614eaa565b614eea8184614eb5565b9250614ef582614ec0565b8060005b83811015614f26578151614f0d8782613a0b565b9650614f1883614eca565b925050600181019050614ef9565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b614f6281614eaa565b614f6c8184614f4e565b9250614f7782614ec0565b8060005b83811015614fa8578151614f8f8782613a0b565b9650614f9a83614eca565b925050600181019050614f7b565b505050505050565b6000614fbc8383614f59565b60408301905092915050565b6000602082019050919050565b614fde81614f2e565b614fe88184614f39565b9250614ff382614f44565b8060005b8381101561502457815161500b8782614fb0565b965061501683614fc8565b925050600181019050614ff7565b505050505050565b600060109050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b6150628161502c565b61506c8184615037565b925061507782615042565b8060005b838110156150a857815161508f8782613a0b565b965061509a8361504c565b92505060018101905061507b565b505050505050565b6000610300820190506150c66000830187614ed7565b6150d36040830186614fd5565b6150e060c0830185614ed7565b6150ee610100830184615059565b95945050505050565b60008151905061510681613aa2565b92915050565b60006020828403121561512257615121613476565b5b6000615130848285016150f7565b91505092915050565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b600061516f600d83613546565b915061517a82615139565b602082019050919050565b6000602082019050818103600083015261519e81615162565b9050919050565b60006151b0826135ed565b91506151bb836135ed565b92508282039050818111156151d3576151d2614459565b5b92915050565b60006151e4826135ed565b91506151ef836135ed565b925082820190508082111561520757615206614459565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261526f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615232565b6152798683615232565b95508019841693508086168417925050509392505050565b60006152ac6152a76152a2846135ed565b613795565b6135ed565b9050919050565b6000819050919050565b6152c683615291565b6152da6152d2826152b3565b84845461523f565b825550505050565b600090565b6152ef6152e2565b6152fa8184846152bd565b505050565b5b8181101561531e576153136000826152e7565b600181019050615300565b5050565b601f821115615363576153348161520d565b61533d84615222565b8101602085101561534c578190505b61536061535885615222565b8301826152ff565b50505b505050565b600082821c905092915050565b600061538660001984600802615368565b1980831691505092915050565b600061539f8383615375565b9150826002028217905092915050565b6153b88261353b565b67ffffffffffffffff8111156153d1576153d061387d565b5b6153db8254614021565b6153e6828285615322565b600060209050601f8311600181146154195760008415615407578287015190505b6154118582615393565b865550615479565b601f1984166154278661520d565b60005b8281101561544f5784890151825560018201915060208501945060208101905061542a565b8683101561546c5784890151615468601f891682615375565b8355505b6001600288020188555050505b505050505050565b600081519050615490816135f7565b92915050565b6000602082840312156154ac576154ab613476565b5b60006154ba84828501615481565b91505092915050565b600060ff82169050919050565b60006154db826154c3565b915060ff82036154ee576154ed614459565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615555602683613546565b9150615560826154f9565b604082019050919050565b6000602082019050818103600083015261558481615548565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006155e7602583613546565b91506155f28261558b565b604082019050919050565b60006020820190508181036000830152615616816155da565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615679602483613546565b91506156848261561d565b604082019050919050565b600060208201905081810360008301526156a88161566c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006156e5602083613546565b91506156f0826156af565b602082019050919050565b60006020820190508181036000830152615714816156d8565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615751601983613546565b915061575c8261571b565b602082019050919050565b6000602082019050818103600083015261578081615744565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006157e3603283613546565b91506157ee82615787565b604082019050919050565b60006020820190508181036000830152615812816157d6565b9050919050565b600060408201905081810360008301526158338185613592565b905081810360208301526158478184613592565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061588a826135ed565b9150615895836135ed565b9250826158a5576158a4615850565b5b828204905092915050565b60006158bb826135ed565b91506158c6836135ed565b92508282026158d4816135ed565b915082820484148315176158eb576158ea614459565b5b5092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615928602083613546565b9150615933826158f2565b602082019050919050565b600060208201905081810360008301526159578161591b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615994601c83613546565b915061599f8261595e565b602082019050919050565b600060208201905081810360008301526159c381615987565b9050919050565b7f43616e6e6f74207472616e73666572202d2050726f6f66206f6620506173737060008201527f6f727420697320736f756c626f756e6400000000000000000000000000000000602082015250565b6000615a26603083613546565b9150615a31826159ca565b604082019050919050565b60006020820190508181036000830152615a5581615a19565b9050919050565b6000608082019050615a716000830187613682565b615a7e6020830186613682565b615a8b6040830185613718565b8181036060830152615a9d8184613f57565b905095945050505050565b600081519050615ab7816134ac565b92915050565b600060208284031215615ad357615ad2613476565b5b6000615ae184828501615aa8565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000615b46603583613546565b9150615b5182615aea565b604082019050919050565b60006020820190508181036000830152615b7581615b39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220fc7b3e1065ff76ed9c3e55279cd3a205fc1183775e22ad1efea30ad39c94a3cc64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a611610104578063c87b56dd116100a2578063dc54daf011610071578063dc54daf014610569578063e985e9c514610599578063eba11e05146105c9578063f2fde38b146105e7576101cf565b8063c87b56dd146104bd578063d21e82ab146104ed578063d4d9c00f1461051d578063d9548e5314610539576101cf565b806395d89b41116100de57806395d89b4114610434578063a22cb46514610452578063b04e3a3b1461046e578063b88d4fde146104a1576101cf565b8063715018a6146103dc57806376e6a447146103e65780638da5cb5b14610416576101cf565b80632f745c59116101715780634f6ccce71161014b5780634f6ccce71461033057806354f96d52146103605780636352211e1461037c57806370a08231146103ac576101cf565b80632f745c59146102c65780633a41515f146102f657806342842e0e14610314576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806318160ddd1461026e57806323b872dd1461028c5780632b7ac3f3146102a8576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e991906134d8565b610603565b6040516101fb9190613520565b60405180910390f35b61020c61067d565b60405161021991906135cb565b60405180910390f35b61023c60048036038101906102379190613623565b61070f565b6040516102499190613691565b60405180910390f35b61026c600480360381019061026791906136d8565b610755565b005b61027661086c565b6040516102839190613727565b60405180910390f35b6102a660048036038101906102a19190613742565b610879565b005b6102b06108d9565b6040516102bd91906137f4565b60405180910390f35b6102e060048036038101906102db91906136d8565b6108fd565b6040516102ed9190613727565b60405180910390f35b6102fe6109a2565b60405161030b9190613830565b60405180910390f35b61032e60048036038101906103299190613742565b6109c8565b005b61034a60048036038101906103459190613623565b6109e8565b6040516103579190613727565b60405180910390f35b61037a6004803603810190610375919061384b565b610a59565b005b61039660048036038101906103919190613623565b610aa5565b6040516103a39190613691565b60405180910390f35b6103c660048036038101906103c1919061384b565b610b2b565b6040516103d39190613727565b60405180910390f35b6103e4610be2565b005b61040060048036038101906103fb91906139ae565b610bf6565b60405161040d9190613a87565b60405180910390f35b61041e610c63565b60405161042b9190613691565b60405180910390f35b61043c610c8d565b60405161044991906135cb565b60405180910390f35b61046c60048036038101906104679190613ace565b610d1f565b005b61048860048036038101906104839190613623565b610d35565b6040516104989493929190613b0e565b60405180910390f35b6104bb60048036038101906104b69190613c0f565b610dfd565b005b6104d760048036038101906104d29190613623565b610e5f565b6040516104e491906135cb565b60405180910390f35b61050760048036038101906105029190613623565b6114cc565b6040516105149190613520565b60405180910390f35b61053760048036038101906105329190613df4565b6114ec565b005b610553600480360381019061054e9190613623565b611971565b6040516105609190613520565b60405180910390f35b610583600480360381019061057e9190613f0e565b611b23565b6040516105909190613f90565b60405180910390f35b6105b360048036038101906105ae9190613fb2565b611c83565b6040516105c09190613520565b60405180910390f35b6105d1611d17565b6040516105de9190613691565b60405180910390f35b61060160048036038101906105fc919061384b565b611d3d565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610676575061067582611dc0565b5b9050919050565b60606000805461068c90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546106b890614021565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061071a82611ea2565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076082610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c7906140c4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107ef611eed565b73ffffffffffffffffffffffffffffffffffffffff16148061081e575061081d81610818611eed565b611c83565b5b61085d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085490614156565b60405180910390fd5b6108678383611ef5565b505050565b6000600880549050905090565b61088a610884611eed565b82611fae565b6108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c0906141e8565b60405180910390fd5b6108d4838383612043565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090883610b2b565b8210610949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109409061427a565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e383838360405180602001604052806000815250610dfd565b505050565b60006109f261086c565b8210610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a9061430c565b60405180910390fd5b60088281548110610a4757610a4661432c565b5b90600052602060002001549050919050565b610a6161233c565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610ab1836123ba565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b19906143a7565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290614439565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bea61233c565b610bf460006123f7565b565b610bfe61344a565b610c0661344a565b60005b6003811015610c5957838160108110610c2557610c2461432c565b5b6020020151828260038110610c3d57610c3c61432c565b5b6020020181815250508080610c5190614488565b915050610c09565b5080915050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c9c90614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc890614021565b8015610d155780601f10610cea57610100808354040283529160200191610d15565b820191906000526020600020905b815481529060010190602001808311610cf857829003601f168201915b5050505050905090565b610d31610d2a611eed565b83836124bd565b5050565b600e8181548110610d4557600080fd5b9060005260206000209060040201600091509050806000018054610d6890614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9490614021565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050908060010154908060020154908060030154905084565b610e0e610e08611eed565b83611fae565b610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e44906141e8565b60405180910390fd5b610e5984848484612629565b50505050565b6060610e6a82612685565b610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea090614542565b60405180910390fd5b6000600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015610f88578382018054610efb90614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2790614021565b8015610f745780601f10610f4957610100808354040283529160200191610f74565b820191906000526020600020905b815481529060010190602001808311610f5757829003601f168201915b505050505081526020019060010190610ee5565b50505050815250509050610fed6040518060400160405280601981526020017f49737375696e6720737461746520696e20746f6b656e555249000000000000008152508260000151600060078110610fe357610fe261432c565b5b60200201516126c6565b606080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630903cd0284600001516001600781106110465761104561432c565b5b60200201516040518263ffffffff1660e01b815260040161106791906135cb565b600060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906110ad9190614603565b80925081935050506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed856000015160006007811061110d5761110c61432c565b5b60200201516040518263ffffffff1660e01b815260040161112e91906135cb565b600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611174919061467b565b8383866000015160026007811061118e5761118d61432c565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed89600001516003600781106111e9576111e861432c565b5b60200201516040518263ffffffff1660e01b815260040161120a91906135cb565b600060405180830381865afa158015611227573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611250919061467b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8a600001516004600781106112a6576112a561432c565b5b60200201516040518263ffffffff1660e01b81526004016112c791906135cb565b600060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130d919061467b565b89600001516005600781106113255761132461432c565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8c600001516006600781106113805761137f61432c565b5b60200201516040518263ffffffff1660e01b81526004016113a191906135cb565b600060405180830381865afa1580156113be573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113e7919061467b565b6113f08e611971565b61142f576040518060400160405280600281526020017f4e6f000000000000000000000000000000000000000000000000000000000000815250611466565b6040518060400160405280600381526020017f59657300000000000000000000000000000000000000000000000000000000008152505b61146f8f612762565b6040516020016114889a99989796959493929190614d16565b60405160208183030381529060405290506114a281612830565b6040516020016114b29190614e88565b604051602081830303815290604052945050505050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c82febf5858585856040518563ffffffff1660e01b815260040161154b94939291906150b0565b602060405180830381865afa158015611568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158c919061510c565b6115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290615185565b60405180910390fd5b600081600160106115dc91906151a5565b601081106115ed576115ec61432c565b5b6020020151905060006115fe61086c565b905061160a82826129b4565b6001600d6000856003601081106116245761162361432c565b5b6020020151815260200190815260200160002060006101000a81548160ff021916908315150217905550600061165984610bf6565b9050600061166682611b23565b90506000600f6000858152602001908152602001600020905060005b600e80549050811015611965576000600e82815481106116a5576116a461432c565b5b90600052602060002090600402016040518060800160405290816000820180546116ce90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546116fa90614021565b80156117475780601f1061171c57610100808354040283529160200191611747565b820191906000526020600020905b81548152906001019060200180831161172a57829003601f168201915b5050505050815260200160018201548152602001600282015481526020016003820154815250509050600060018260200151836040015161178891906151a5565b61179291906151d9565b67ffffffffffffffff8111156117ab576117aa61387d565b5b6040519080825280601f01601f1916602001820160405280156117dd5781602001600182028036833780820191505090505b5090506000826020015190505b82604001518111611877578581815181106118085761180761432c565b5b602001015160f81c60f81b8284602001518361182491906151a5565b815181106118355761183461432c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061186f90614488565b9150506117ea565b506000819050808560000185600781106118945761189361432c565b5b0190816118a191906153af565b5061194f83600001518660000186600781106118c0576118bf61432c565b5b0180546118cc90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546118f890614021565b80156119455780601f1061191a57610100808354040283529160200191611945565b820191906000526020600020905b81548152906001019060200180831161192857829003601f168201915b50505050506126c6565b505050808061195d90614488565b915050611682565b50505050505050505050565b600080600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015611a515783820180546119c490614021565b80601f01602080910402602001604051908101604052809291908181526020018280546119f090614021565b8015611a3d5780601f10611a1257610100808354040283529160200191611a3d565b820191906000526020600020905b815481529060010190602001808311611a2057829003601f168201915b5050505050815260200190600101906119ae565b505050508152505090506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc0bb5d48360000151600660078110611ab357611ab261432c565b5b60200201516040518263ffffffff1660e01b8152600401611ad491906135cb565b602060405180830381865afa158015611af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b159190615496565b905080421192505050919050565b606060006040518060600160405280601f60ff168152602001601f60ff168152602001601a60ff1681525090506000605867ffffffffffffffff811115611b6d57611b6c61387d565b5b6040519080825280601f01601f191660200182016040528015611b9f5781602001600182028036833780820191505090505b5090506000805b6003811015611c77576000868260038110611bc457611bc361432c565b5b6020020151905060005b858360038110611be157611be061432c565b5b602002015160ff168160ff161015611c625760ff821660f81b858580611c0690614488565b965081518110611c1957611c1861432c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600882901c91508080611c5a906154d0565b915050611bce565b50508080611c6f90614488565b915050611ba6565b50819350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d4561233c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab9061556b565b60405180910390fd5b611dbd816123f7565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e8b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e9b5750611e9a82612bd1565b5b9050919050565b611eab81612685565b611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee1906143a7565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611f6883610aa5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611fba83610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ffc5750611ffb8185611c83565b5b8061203a57508373ffffffffffffffffffffffffffffffffffffffff166120228461070f565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661206382610aa5565b73ffffffffffffffffffffffffffffffffffffffff16146120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b0906155fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211f9061568f565b60405180910390fd5b6121358383836001612c3b565b8273ffffffffffffffffffffffffffffffffffffffff1661215582610aa5565b73ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a2906155fd565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123378383836001612cbc565b505050565b612344611eed565b73ffffffffffffffffffffffffffffffffffffffff16612362610c63565b73ffffffffffffffffffffffffffffffffffffffff16146123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af906156fb565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290615767565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161261c9190613520565b60405180910390a3505050565b612634848484612043565b61264084848484612cc2565b61267f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612676906157f9565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff166126a7836123ba565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61275e82826040516024016126dc929190615819565b6040516020818303038152906040527f4b5c4277000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612e49565b5050565b60606000600161277184612e6a565b01905060008167ffffffffffffffff8111156127905761278f61387d565b5b6040519080825280601f01601f1916602001820160405280156127c25781602001600182028036833780820191505090505b509050600082602001820190505b600115612825578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161281957612818615850565b5b049450600085036127d0575b819350505050919050565b60606000825103612852576040518060200160405280600081525090506129af565b6000604051806060016040528060408152602001615bac604091399050600060036002855161288191906151d9565b61288b919061587f565b600461289791906158b0565b905060006020826128a891906151d9565b67ffffffffffffffff8111156128c1576128c061387d565b5b6040519080825280601f01601f1916602001820160405280156128f35781602001600182028036833780820191505090505b509050818152600183018586518101602084015b8183101561296e576003830192508251603f8160121c1685015160f81b8252600182019150603f81600c1c1685015160f81b8252600182019150603f8160061c1685015160f81b8252600182019150603f811685015160f81b825260018201915050612907565b6003895106600181146129885760028114612998576129a3565b613d3d60f01b60028303526129a3565b603d60f81b60018303525b50505050508093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1a9061593e565b60405180910390fd5b612a2c81612685565b15612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a63906159aa565b60405180910390fd5b612a7a600083836001612c3b565b612a8381612685565b15612ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aba906159aa565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612bcd600083836001612cbc565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612c4784848484612fbd565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cad90615a3c565b60405180910390fd5b50505050565b50505050565b6000612ce38473ffffffffffffffffffffffffffffffffffffffff1661311b565b15612e3c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d0c611eed565b8786866040518563ffffffff1660e01b8152600401612d2e9493929190615a5c565b6020604051808303816000875af1925050508015612d6a57506040513d601f19601f82011682018060405250810190612d679190615abd565b60015b612dec573d8060008114612d9a576040519150601f19603f3d011682016040523d82523d6000602084013e612d9f565b606091505b506000815103612de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb906157f9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e41565b600190505b949350505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612ec8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612ebe57612ebd615850565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612f05576d04ee2d6d415b85acef81000000008381612efb57612efa615850565b5b0492506020810190505b662386f26fc100008310612f3457662386f26fc100008381612f2a57612f29615850565b5b0492506010810190505b6305f5e1008310612f5d576305f5e1008381612f5357612f52615850565b5b0492506008810190505b6127108310612f82576127108381612f7857612f77615850565b5b0492506004810190505b60648310612fa55760648381612f9b57612f9a615850565b5b0492506002810190505b600a8310612fb4576001810190505b80915050919050565b612fc98484848461313e565b600181111561300d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300490615b5c565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130545761304f81613144565b613093565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461309257613091858261318d565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036130d5576130d0816132fa565b613114565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146131135761311284826133cb565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161319a84610b2b565b6131a491906151a5565b9050600060076000848152602001908152602001600020549050818114613289576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061330e91906151a5565b905060006009600084815260200190815260200160002054905060006008838154811061333e5761333d61432c565b5b9060005260206000200154905080600883815481106133605761335f61432c565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806133af576133ae615b7c565b5b6001900381819060005260206000200160009055905550505050565b60006133d683610b2b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6040518060600160405280600390602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6134b581613480565b81146134c057600080fd5b50565b6000813590506134d2816134ac565b92915050565b6000602082840312156134ee576134ed613476565b5b60006134fc848285016134c3565b91505092915050565b60008115159050919050565b61351a81613505565b82525050565b60006020820190506135356000830184613511565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561357557808201518184015260208101905061355a565b60008484015250505050565b6000601f19601f8301169050919050565b600061359d8261353b565b6135a78185613546565b93506135b7818560208601613557565b6135c081613581565b840191505092915050565b600060208201905081810360008301526135e58184613592565b905092915050565b6000819050919050565b613600816135ed565b811461360b57600080fd5b50565b60008135905061361d816135f7565b92915050565b60006020828403121561363957613638613476565b5b60006136478482850161360e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061367b82613650565b9050919050565b61368b81613670565b82525050565b60006020820190506136a66000830184613682565b92915050565b6136b581613670565b81146136c057600080fd5b50565b6000813590506136d2816136ac565b92915050565b600080604083850312156136ef576136ee613476565b5b60006136fd858286016136c3565b925050602061370e8582860161360e565b9150509250929050565b613721816135ed565b82525050565b600060208201905061373c6000830184613718565b92915050565b60008060006060848603121561375b5761375a613476565b5b6000613769868287016136c3565b935050602061377a868287016136c3565b925050604061378b8682870161360e565b9150509250925092565b6000819050919050565b60006137ba6137b56137b084613650565b613795565b613650565b9050919050565b60006137cc8261379f565b9050919050565b60006137de826137c1565b9050919050565b6137ee816137d3565b82525050565b600060208201905061380960008301846137e5565b92915050565b600061381a826137c1565b9050919050565b61382a8161380f565b82525050565b60006020820190506138456000830184613821565b92915050565b60006020828403121561386157613860613476565b5b600061386f848285016136c3565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138b582613581565b810181811067ffffffffffffffff821117156138d4576138d361387d565b5b80604052505050565b60006138e761346c565b90506138f382826138ac565b919050565b600067ffffffffffffffff8211156139135761391261387d565b5b602082029050919050565b600080fd5b6000613936613931846138f8565b6138dd565b905080602084028301858111156139505761394f61391e565b5b835b818110156139795780613965888261360e565b845260208401935050602081019050613952565b5050509392505050565b600082601f83011261399857613997613878565b5b60106139a5848285613923565b91505092915050565b600061020082840312156139c5576139c4613476565b5b60006139d384828501613983565b91505092915050565b600060039050919050565b600081905092915050565b6000819050919050565b613a05816135ed565b82525050565b6000613a1783836139fc565b60208301905092915050565b6000602082019050919050565b613a39816139dc565b613a4381846139e7565b9250613a4e826139f2565b8060005b83811015613a7f578151613a668782613a0b565b9650613a7183613a23565b925050600181019050613a52565b505050505050565b6000606082019050613a9c6000830184613a30565b92915050565b613aab81613505565b8114613ab657600080fd5b50565b600081359050613ac881613aa2565b92915050565b60008060408385031215613ae557613ae4613476565b5b6000613af3858286016136c3565b9250506020613b0485828601613ab9565b9150509250929050565b60006080820190508181036000830152613b288187613592565b9050613b376020830186613718565b613b446040830185613718565b613b516060830184613718565b95945050505050565b600080fd5b600067ffffffffffffffff821115613b7a57613b7961387d565b5b613b8382613581565b9050602081019050919050565b82818337600083830152505050565b6000613bb2613bad84613b5f565b6138dd565b905082815260208101848484011115613bce57613bcd613b5a565b5b613bd9848285613b90565b509392505050565b600082601f830112613bf657613bf5613878565b5b8135613c06848260208601613b9f565b91505092915050565b60008060008060808587031215613c2957613c28613476565b5b6000613c37878288016136c3565b9450506020613c48878288016136c3565b9350506040613c598782880161360e565b925050606085013567ffffffffffffffff811115613c7a57613c7961347b565b5b613c8687828801613be1565b91505092959194509250565b600067ffffffffffffffff821115613cad57613cac61387d565b5b602082029050919050565b6000613ccb613cc684613c92565b6138dd565b90508060208402830185811115613ce557613ce461391e565b5b835b81811015613d0e5780613cfa888261360e565b845260208401935050602081019050613ce7565b5050509392505050565b600082601f830112613d2d57613d2c613878565b5b6002613d3a848285613cb8565b91505092915050565b600067ffffffffffffffff821115613d5e57613d5d61387d565b5b602082029050919050565b6000613d7c613d7784613d43565b6138dd565b90508060408402830185811115613d9657613d9561391e565b5b835b81811015613dbf5780613dab8882613d18565b845260208401935050604081019050613d98565b5050509392505050565b600082601f830112613dde57613ddd613878565b5b6002613deb848285613d69565b91505092915050565b6000806000806103008587031215613e0f57613e0e613476565b5b6000613e1d87828801613d18565b9450506040613e2e87828801613dc9565b93505060c0613e3f87828801613d18565b925050610100613e5187828801613983565b91505092959194509250565b600067ffffffffffffffff821115613e7857613e7761387d565b5b602082029050919050565b6000613e96613e9184613e5d565b6138dd565b90508060208402830185811115613eb057613eaf61391e565b5b835b81811015613ed95780613ec5888261360e565b845260208401935050602081019050613eb2565b5050509392505050565b600082601f830112613ef857613ef7613878565b5b6003613f05848285613e83565b91505092915050565b600060608284031215613f2457613f23613476565b5b6000613f3284828501613ee3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000613f6282613f3b565b613f6c8185613f46565b9350613f7c818560208601613557565b613f8581613581565b840191505092915050565b60006020820190508181036000830152613faa8184613f57565b905092915050565b60008060408385031215613fc957613fc8613476565b5b6000613fd7858286016136c3565b9250506020613fe8858286016136c3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061403957607f821691505b60208210810361404c5761404b613ff2565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006140ae602183613546565b91506140b982614052565b604082019050919050565b600060208201905081810360008301526140dd816140a1565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000614140603d83613546565b915061414b826140e4565b604082019050919050565b6000602082019050818103600083015261416f81614133565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006141d2602d83613546565b91506141dd82614176565b604082019050919050565b60006020820190508181036000830152614201816141c5565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614264602b83613546565b915061426f82614208565b604082019050919050565b6000602082019050818103600083015261429381614257565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006142f6602c83613546565b91506143018261429a565b604082019050919050565b60006020820190508181036000830152614325816142e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000614391601883613546565b915061439c8261435b565b602082019050919050565b600060208201905081810360008301526143c081614384565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614423602983613546565b915061442e826143c7565b604082019050919050565b6000602082019050818103600083015261445281614416565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614493826135ed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144c5576144c4614459565b5b600182019050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061452c602f83613546565b9150614537826144d0565b604082019050919050565b6000602082019050818103600083015261455b8161451f565b9050919050565b600067ffffffffffffffff82111561457d5761457c61387d565b5b61458682613581565b9050602081019050919050565b60006145a66145a184614562565b6138dd565b9050828152602081018484840111156145c2576145c1613b5a565b5b6145cd848285613557565b509392505050565b600082601f8301126145ea576145e9613878565b5b81516145fa848260208601614593565b91505092915050565b6000806040838503121561461a57614619613476565b5b600083015167ffffffffffffffff8111156146385761463761347b565b5b614644858286016145d5565b925050602083015167ffffffffffffffff8111156146655761466461347b565b5b614671858286016145d5565b9150509250929050565b60006020828403121561469157614690613476565b5b600082015167ffffffffffffffff8111156146af576146ae61347b565b5b6146bb848285016145d5565b91505092915050565b600081905092915050565b7f7b202261747472696275746573223a205b000000000000000000000000000000600082015250565b60006147056011836146c4565b9150614710826146cf565b601182019050919050565b7f7b2274726169745f74797065223a202249737375696e67205374617465222c2060008201527f2276616c7565223a202200000000000000000000000000000000000000000000602082015250565b6000614777602a836146c4565b91506147828261471b565b602a82019050919050565b60006147988261353b565b6147a281856146c4565b93506147b2818560208601613557565b80840191505092915050565b7f227d2c7b2274726169745f74797065223a202246697273744e616d65222c202260008201527f76616c7565223a20220000000000000000000000000000000000000000000000602082015250565b600061481a6029836146c4565b9150614825826147be565b602982019050919050565b7f227d2c7b2274726169745f74797065223a20224c6173744e616d65222c20227660008201527f616c7565223a2022000000000000000000000000000000000000000000000000602082015250565b600061488c6028836146c4565b915061489782614830565b602882019050919050565b7f227d2c7b2274726169745f74797065223a202250617373706f7274204e756d6260008201527f6572222c202276616c7565223a20220000000000000000000000000000000000602082015250565b60006148fe602f836146c4565b9150614909826148a2565b602f82019050919050565b7f227d2c7b2274726169745f74797065223a20224e6174696f6e616c697479222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614970602b836146c4565b915061497b82614914565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202244617465206f6620626972746860008201527f222c202276616c7565223a202200000000000000000000000000000000000000602082015250565b60006149e2602d836146c4565b91506149ed82614986565b602d82019050919050565b7f227d2c7b2274726169745f74797065223a202247656e646572222c202276616c60008201527f7565223a20220000000000000000000000000000000000000000000000000000602082015250565b6000614a546026836146c4565b9150614a5f826149f8565b602682019050919050565b7f227d2c7b2274726169745f74797065223a20224578706972792064617465222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614ac6602b836146c4565b9150614ad182614a6a565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202245787069726564222c2022766160008201527f6c7565223a202200000000000000000000000000000000000000000000000000602082015250565b6000614b386027836146c4565b9150614b4382614adc565b602782019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614b846002836146c4565b9150614b8f82614b4e565b600282019050919050565b7f5d2c000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bd06002836146c4565b9150614bdb82614b9a565b600282019050919050565b7f226465736372697074696f6e223a202250726f6f66206f662050617373706f7260008201527f742067756172616e7465657320706f7373657373696f6e206f6620612076616c60208201527f69642070617373706f72742e222c2265787465726e616c5f75726c223a20226860408201527f747470733a2f2f6769746875622e636f6d2f7a6b2d70617373706f72742f707260608201527f6f6f662d6f662d70617373706f7274222c22696d616765223a2022687474707360808201527f3a2f2f692e696d6775722e636f6d2f396b766574696a2e706e67222c226e616d60a08201527f65223a202250726f6f66206f662050617373706f72742023000000000000000060c082015250565b6000614d0060d8836146c4565b9150614d0b82614be6565b60d882019050919050565b6000614d21826146f8565b9150614d2c8261476a565b9150614d38828d61478d565b9150614d438261480d565b9150614d4f828c61478d565b9150614d5a8261487f565b9150614d66828b61478d565b9150614d71826148f1565b9150614d7d828a61478d565b9150614d8882614963565b9150614d94828961478d565b9150614d9f826149d5565b9150614dab828861478d565b9150614db682614a47565b9150614dc2828761478d565b9150614dcd82614ab9565b9150614dd9828661478d565b9150614de482614b2b565b9150614df0828561478d565b9150614dfb82614b77565b9150614e0682614bc3565b9150614e1182614cf3565b9150614e1d828461478d565b9150614e2882614b77565b91508190509b9a5050505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614e72601d836146c4565b9150614e7d82614e3c565b601d82019050919050565b6000614e9382614e65565b9150614e9f828461478d565b915081905092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b614ee081614eaa565b614eea8184614eb5565b9250614ef582614ec0565b8060005b83811015614f26578151614f0d8782613a0b565b9650614f1883614eca565b925050600181019050614ef9565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b614f6281614eaa565b614f6c8184614f4e565b9250614f7782614ec0565b8060005b83811015614fa8578151614f8f8782613a0b565b9650614f9a83614eca565b925050600181019050614f7b565b505050505050565b6000614fbc8383614f59565b60408301905092915050565b6000602082019050919050565b614fde81614f2e565b614fe88184614f39565b9250614ff382614f44565b8060005b8381101561502457815161500b8782614fb0565b965061501683614fc8565b925050600181019050614ff7565b505050505050565b600060109050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b6150628161502c565b61506c8184615037565b925061507782615042565b8060005b838110156150a857815161508f8782613a0b565b965061509a8361504c565b92505060018101905061507b565b505050505050565b6000610300820190506150c66000830187614ed7565b6150d36040830186614fd5565b6150e060c0830185614ed7565b6150ee610100830184615059565b95945050505050565b60008151905061510681613aa2565b92915050565b60006020828403121561512257615121613476565b5b6000615130848285016150f7565b91505092915050565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b600061516f600d83613546565b915061517a82615139565b602082019050919050565b6000602082019050818103600083015261519e81615162565b9050919050565b60006151b0826135ed565b91506151bb836135ed565b92508282039050818111156151d3576151d2614459565b5b92915050565b60006151e4826135ed565b91506151ef836135ed565b925082820190508082111561520757615206614459565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261526f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615232565b6152798683615232565b95508019841693508086168417925050509392505050565b60006152ac6152a76152a2846135ed565b613795565b6135ed565b9050919050565b6000819050919050565b6152c683615291565b6152da6152d2826152b3565b84845461523f565b825550505050565b600090565b6152ef6152e2565b6152fa8184846152bd565b505050565b5b8181101561531e576153136000826152e7565b600181019050615300565b5050565b601f821115615363576153348161520d565b61533d84615222565b8101602085101561534c578190505b61536061535885615222565b8301826152ff565b50505b505050565b600082821c905092915050565b600061538660001984600802615368565b1980831691505092915050565b600061539f8383615375565b9150826002028217905092915050565b6153b88261353b565b67ffffffffffffffff8111156153d1576153d061387d565b5b6153db8254614021565b6153e6828285615322565b600060209050601f8311600181146154195760008415615407578287015190505b6154118582615393565b865550615479565b601f1984166154278661520d565b60005b8281101561544f5784890151825560018201915060208501945060208101905061542a565b8683101561546c5784890151615468601f891682615375565b8355505b6001600288020188555050505b505050505050565b600081519050615490816135f7565b92915050565b6000602082840312156154ac576154ab613476565b5b60006154ba84828501615481565b91505092915050565b600060ff82169050919050565b60006154db826154c3565b915060ff82036154ee576154ed614459565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615555602683613546565b9150615560826154f9565b604082019050919050565b6000602082019050818103600083015261558481615548565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006155e7602583613546565b91506155f28261558b565b604082019050919050565b60006020820190508181036000830152615616816155da565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615679602483613546565b91506156848261561d565b604082019050919050565b600060208201905081810360008301526156a88161566c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006156e5602083613546565b91506156f0826156af565b602082019050919050565b60006020820190508181036000830152615714816156d8565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615751601983613546565b915061575c8261571b565b602082019050919050565b6000602082019050818103600083015261578081615744565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006157e3603283613546565b91506157ee82615787565b604082019050919050565b60006020820190508181036000830152615812816157d6565b9050919050565b600060408201905081810360008301526158338185613592565b905081810360208301526158478184613592565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061588a826135ed565b9150615895836135ed565b9250826158a5576158a4615850565b5b828204905092915050565b60006158bb826135ed565b91506158c6836135ed565b92508282026158d4816135ed565b915082820484148315176158eb576158ea614459565b5b5092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615928602083613546565b9150615933826158f2565b602082019050919050565b600060208201905081810360008301526159578161591b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615994601c83613546565b915061599f8261595e565b602082019050919050565b600060208201905081810360008301526159c381615987565b9050919050565b7f43616e6e6f74207472616e73666572202d2050726f6f66206f6620506173737060008201527f6f727420697320736f756c626f756e6400000000000000000000000000000000602082015250565b6000615a26603083613546565b9150615a31826159ca565b604082019050919050565b60006020820190508181036000830152615a5581615a19565b9050919050565b6000608082019050615a716000830187613682565b615a7e6020830186613682565b615a8b6040830185613718565b8181036060830152615a9d8184613f57565b905095945050505050565b600081519050615ab7816134ac565b92915050565b600060208284031215615ad357615ad2613476565b5b6000615ae184828501615aa8565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000615b46603583613546565b9150615b5182615aea565b604082019050919050565b60006020820190508181036000830152615b7581615b39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220fc7b3e1065ff76ed9c3e55279cd3a205fc1183775e22ad1efea30ad39c94a3cc64736f6c63430008120033", + "bytecode": "0x60a06040526000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200005357600080fd5b5060405162006bbd38038062006bbd8339818101604052810190620000799190620009d1565b6040518060400160405280600f81526020017f50726f6f664f6650617373706f727400000000000000000000000000000000008152506040518060400160405280600f81526020017f50726f6f664f6650617373706f727400000000000000000000000000000000008152508160009081620000f6919062000c92565b50806001908162000108919062000c92565b5050506200012b6200011f620001c960201b60201c565b620001d160201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001b06200029760201b60201c565b620001c133620007bd60201b60201c565b505062000e94565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600e60405180608001604052806040518060400160405280600d81526020017f69737375696e675f7374617465000000000000000000000000000000000000008152508152602001600281526020016004815260200160008152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000332919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600481526020017f6e616d6500000000000000000000000000000000000000000000000000000000815250815260200160058152602001602b8152602001600181525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620003ee919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600f81526020017f70617373706f72745f6e756d62657200000000000000000000000000000000008152508152602001602c815260200160348152602001600281525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620004aa919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600b81526020017f6e6174696f6e616c6974790000000000000000000000000000000000000000008152508152602001603681526020016038815260200160038152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000566919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600d81526020017f646174655f6f665f626972746800000000000000000000000000000000000000815250815260200160398152602001603e815260200160048152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000622919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600681526020017f67656e646572000000000000000000000000000000000000000000000000000081525081526020016040815260200160408152602001600581525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620006de919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600b81526020017f6578706972795f64617465000000000000000000000000000000000000000000815250815260200160418152602001604681526020016006815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000190816200079a919062000c92565b506020820151816001015560408201518160020155606082015181600301555050565b620007cd6200085360201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200083f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008369062000e00565b60405180910390fd5b6200085081620001d160201b60201c565b50565b62000863620001c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000889620008e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d99062000e72565b60405180910390fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009408262000913565b9050919050565b6000620009548262000933565b9050919050565b620009668162000947565b81146200097257600080fd5b50565b60008151905062000986816200095b565b92915050565b6000620009998262000933565b9050919050565b620009ab816200098c565b8114620009b757600080fd5b50565b600081519050620009cb81620009a0565b92915050565b60008060408385031215620009eb57620009ea6200090e565b5b6000620009fb8582860162000975565b925050602062000a0e85828601620009ba565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9a57607f821691505b60208210810362000ab05762000aaf62000a52565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000adb565b62000b26868362000adb565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7362000b6d62000b678462000b3e565b62000b48565b62000b3e565b9050919050565b6000819050919050565b62000b8f8362000b52565b62000ba762000b9e8262000b7a565b84845462000ae8565b825550505050565b600090565b62000bbe62000baf565b62000bcb81848462000b84565b505050565b5b8181101562000bf35762000be760008262000bb4565b60018101905062000bd1565b5050565b601f82111562000c425762000c0c8162000ab6565b62000c178462000acb565b8101602085101562000c27578190505b62000c3f62000c368562000acb565b83018262000bd0565b50505b505050565b600082821c905092915050565b600062000c676000198460080262000c47565b1980831691505092915050565b600062000c82838362000c54565b9150826002028217905092915050565b62000c9d8262000a18565b67ffffffffffffffff81111562000cb95762000cb862000a23565b5b62000cc5825462000a81565b62000cd282828562000bf7565b600060209050601f83116001811462000d0a576000841562000cf5578287015190505b62000d01858262000c74565b86555062000d71565b601f19841662000d1a8662000ab6565b60005b8281101562000d445784890151825560018201915060208501945060208101905062000d1d565b8683101562000d64578489015162000d60601f89168262000c54565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062000de860268362000d79565b915062000df58262000d8a565b604082019050919050565b6000602082019050818103600083015262000e1b8162000dd9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e5a60208362000d79565b915062000e678262000e22565b602082019050919050565b6000602082019050818103600083015262000e8d8162000e4b565b9050919050565b608051615d0662000eb7600039600081816108db01526115670152615d066000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a611610104578063c87b56dd116100a2578063dc54daf011610071578063dc54daf014610569578063e985e9c514610599578063eba11e05146105c9578063f2fde38b146105e7576101cf565b8063c87b56dd146104bd578063d21e82ab146104ed578063d4d9c00f1461051d578063d9548e5314610539576101cf565b806395d89b41116100de57806395d89b4114610434578063a22cb46514610452578063b04e3a3b1461046e578063b88d4fde146104a1576101cf565b8063715018a6146103dc57806376e6a447146103e65780638da5cb5b14610416576101cf565b80632f745c59116101715780634f6ccce71161014b5780634f6ccce71461033057806354f96d52146103605780636352211e1461037c57806370a08231146103ac576101cf565b80632f745c59146102c65780633a41515f146102f657806342842e0e14610314576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806318160ddd1461026e57806323b872dd1461028c5780632b7ac3f3146102a8576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e99190613551565b610603565b6040516101fb9190613599565b60405180910390f35b61020c61067d565b6040516102199190613644565b60405180910390f35b61023c6004803603810190610237919061369c565b61070f565b604051610249919061370a565b60405180910390f35b61026c60048036038101906102679190613751565b610755565b005b61027661086c565b60405161028391906137a0565b60405180910390f35b6102a660048036038101906102a191906137bb565b610879565b005b6102b06108d9565b6040516102bd919061386d565b60405180910390f35b6102e060048036038101906102db9190613751565b6108fd565b6040516102ed91906137a0565b60405180910390f35b6102fe6109a2565b60405161030b91906138a9565b60405180910390f35b61032e600480360381019061032991906137bb565b6109c8565b005b61034a6004803603810190610345919061369c565b6109e8565b60405161035791906137a0565b60405180910390f35b61037a600480360381019061037591906138c4565b610a59565b005b6103966004803603810190610391919061369c565b610aa5565b6040516103a3919061370a565b60405180910390f35b6103c660048036038101906103c191906138c4565b610b2b565b6040516103d391906137a0565b60405180910390f35b6103e4610be2565b005b61040060048036038101906103fb9190613a27565b610bf6565b60405161040d9190613b00565b60405180910390f35b61041e610c63565b60405161042b919061370a565b60405180910390f35b61043c610c8d565b6040516104499190613644565b60405180910390f35b61046c60048036038101906104679190613b47565b610d1f565b005b6104886004803603810190610483919061369c565b610d35565b6040516104989493929190613b87565b60405180910390f35b6104bb60048036038101906104b69190613c88565b610dfd565b005b6104d760048036038101906104d2919061369c565b610e5f565b6040516104e49190613644565b60405180910390f35b6105076004803603810190610502919061369c565b6114cc565b6040516105149190613599565b60405180910390f35b61053760048036038101906105329190613e6d565b6114ec565b005b610553600480360381019061054e919061369c565b6119ea565b6040516105609190613599565b60405180910390f35b610583600480360381019061057e9190613f87565b611b9c565b6040516105909190614009565b60405180910390f35b6105b360048036038101906105ae919061402b565b611cfc565b6040516105c09190613599565b60405180910390f35b6105d1611d90565b6040516105de919061370a565b60405180910390f35b61060160048036038101906105fc91906138c4565b611db6565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610676575061067582611e39565b5b9050919050565b60606000805461068c9061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546106b89061409a565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061071a82611f1b565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076082610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c79061413d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107ef611f66565b73ffffffffffffffffffffffffffffffffffffffff16148061081e575061081d81610818611f66565b611cfc565b5b61085d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610854906141cf565b60405180910390fd5b6108678383611f6e565b505050565b6000600880549050905090565b61088a610884611f66565b82612027565b6108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090614261565b60405180910390fd5b6108d48383836120bc565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090883610b2b565b8210610949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610940906142f3565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e383838360405180602001604052806000815250610dfd565b505050565b60006109f261086c565b8210610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a90614385565b60405180910390fd5b60088281548110610a4757610a466143a5565b5b90600052602060002001549050919050565b610a616123b5565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610ab183612433565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990614420565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906144b2565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bea6123b5565b610bf46000612470565b565b610bfe6134c3565b610c066134c3565b60005b6003811015610c5957838160108110610c2557610c246143a5565b5b6020020151828260038110610c3d57610c3c6143a5565b5b6020020181815250508080610c5190614501565b915050610c09565b5080915050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c9c9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc89061409a565b8015610d155780601f10610cea57610100808354040283529160200191610d15565b820191906000526020600020905b815481529060010190602001808311610cf857829003601f168201915b5050505050905090565b610d31610d2a611f66565b8383612536565b5050565b600e8181548110610d4557600080fd5b9060005260206000209060040201600091509050806000018054610d689061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d949061409a565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050908060010154908060020154908060030154905084565b610e0e610e08611f66565b83612027565b610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4490614261565b60405180910390fd5b610e59848484846126a2565b50505050565b6060610e6a826126fe565b610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea0906145bb565b60405180910390fd5b6000600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015610f88578382018054610efb9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610f279061409a565b8015610f745780601f10610f4957610100808354040283529160200191610f74565b820191906000526020600020905b815481529060010190602001808311610f5757829003601f168201915b505050505081526020019060010190610ee5565b50505050815250509050610fed6040518060400160405280601981526020017f49737375696e6720737461746520696e20746f6b656e555249000000000000008152508260000151600060078110610fe357610fe26143a5565b5b602002015161273f565b606080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630903cd028460000151600160078110611046576110456143a5565b5b60200201516040518263ffffffff1660e01b81526004016110679190613644565b600060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906110ad919061467c565b80925081935050506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed856000015160006007811061110d5761110c6143a5565b5b60200201516040518263ffffffff1660e01b815260040161112e9190613644565b600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061117491906146f4565b8383866000015160026007811061118e5761118d6143a5565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed89600001516003600781106111e9576111e86143a5565b5b60200201516040518263ffffffff1660e01b815260040161120a9190613644565b600060405180830381865afa158015611227573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061125091906146f4565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8a600001516004600781106112a6576112a56143a5565b5b60200201516040518263ffffffff1660e01b81526004016112c79190613644565b600060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130d91906146f4565b8960000151600560078110611325576113246143a5565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8c600001516006600781106113805761137f6143a5565b5b60200201516040518263ffffffff1660e01b81526004016113a19190613644565b600060405180830381865afa1580156113be573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113e791906146f4565b6113f08e6119ea565b61142f576040518060400160405280600281526020017f4e6f000000000000000000000000000000000000000000000000000000000000815250611466565b6040518060400160405280600381526020017f59657300000000000000000000000000000000000000000000000000000000008152505b61146f8f6127db565b6040516020016114889a99989796959493929190614d8f565b60405160208183030381529060405290506114a2816128a9565b6040516020016114b29190614f01565b604051602081830303815290604052945050505050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600d600082600360108110611504576115036143a5565b5b6020020151815260200190815260200160002060009054906101000a900460ff1615611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90614f6f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c82febf5858585856040518563ffffffff1660e01b81526004016115c49493929190615195565b602060405180830381865afa1580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160591906151f1565b611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b9061526a565b60405180910390fd5b60008160016010611655919061528a565b60108110611666576116656143a5565b5b60200201519050600061167761086c565b90506116838282612a2d565b6001600d60008560036010811061169d5761169c6143a5565b5b6020020151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006116d284610bf6565b905060006116df82611b9c565b90506000600f6000858152602001908152602001600020905060005b600e805490508110156119de576000600e828154811061171e5761171d6143a5565b5b90600052602060002090600402016040518060800160405290816000820180546117479061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546117739061409a565b80156117c05780601f10611795576101008083540402835291602001916117c0565b820191906000526020600020905b8154815290600101906020018083116117a357829003601f168201915b50505050508152602001600182015481526020016002820154815260200160038201548152505090506000600182602001518360400151611801919061528a565b61180b91906152be565b67ffffffffffffffff811115611824576118236138f6565b5b6040519080825280601f01601f1916602001820160405280156118565781602001600182028036833780820191505090505b5090506000826020015190505b826040015181116118f057858181518110611881576118806143a5565b5b602001015160f81c60f81b8284602001518361189d919061528a565b815181106118ae576118ad6143a5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806118e890614501565b915050611863565b5060008190508085600001856007811061190d5761190c6143a5565b5b01908161191a9190615494565b506119c88360000151866000018660078110611939576119386143a5565b5b0180546119459061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546119719061409a565b80156119be5780601f10611993576101008083540402835291602001916119be565b820191906000526020600020905b8154815290600101906020018083116119a157829003601f168201915b505050505061273f565b50505080806119d690614501565b9150506116fb565b50505050505050505050565b600080600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015611aca578382018054611a3d9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a699061409a565b8015611ab65780601f10611a8b57610100808354040283529160200191611ab6565b820191906000526020600020905b815481529060010190602001808311611a9957829003601f168201915b505050505081526020019060010190611a27565b505050508152505090506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc0bb5d48360000151600660078110611b2c57611b2b6143a5565b5b60200201516040518263ffffffff1660e01b8152600401611b4d9190613644565b602060405180830381865afa158015611b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8e919061557b565b905080421192505050919050565b606060006040518060600160405280601f60ff168152602001601f60ff168152602001601a60ff1681525090506000605867ffffffffffffffff811115611be657611be56138f6565b5b6040519080825280601f01601f191660200182016040528015611c185781602001600182028036833780820191505090505b5090506000805b6003811015611cf0576000868260038110611c3d57611c3c6143a5565b5b6020020151905060005b858360038110611c5a57611c596143a5565b5b602002015160ff168160ff161015611cdb5760ff821660f81b858580611c7f90614501565b965081518110611c9257611c916143a5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600882901c91508080611cd3906155b5565b915050611c47565b50508080611ce890614501565b915050611c1f565b50819350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611dbe6123b5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2490615650565b60405180910390fd5b611e3681612470565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f0457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f145750611f1382612c4a565b5b9050919050565b611f24816126fe565b611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a90614420565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611fe183610aa5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061203383610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061207557506120748185611cfc565b5b806120b357508373ffffffffffffffffffffffffffffffffffffffff1661209b8461070f565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166120dc82610aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612132576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612129906156e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219890615774565b60405180910390fd5b6121ae8383836001612cb4565b8273ffffffffffffffffffffffffffffffffffffffff166121ce82610aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b906156e2565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123b08383836001612d35565b505050565b6123bd611f66565b73ffffffffffffffffffffffffffffffffffffffff166123db610c63565b73ffffffffffffffffffffffffffffffffffffffff1614612431576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612428906157e0565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259b9061584c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126959190613599565b60405180910390a3505050565b6126ad8484846120bc565b6126b984848484612d3b565b6126f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ef906158de565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff1661272083612433565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6127d782826040516024016127559291906158fe565b6040516020818303038152906040527f4b5c4277000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612ec2565b5050565b6060600060016127ea84612ee3565b01905060008167ffffffffffffffff811115612809576128086138f6565b5b6040519080825280601f01601f19166020018201604052801561283b5781602001600182028036833780820191505090505b509050600082602001820190505b60011561289e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161289257612891615935565b5b04945060008503612849575b819350505050919050565b606060008251036128cb57604051806020016040528060008152509050612a28565b6000604051806060016040528060408152602001615c9160409139905060006003600285516128fa91906152be565b6129049190615964565b60046129109190615995565b9050600060208261292191906152be565b67ffffffffffffffff81111561293a576129396138f6565b5b6040519080825280601f01601f19166020018201604052801561296c5781602001600182028036833780820191505090505b509050818152600183018586518101602084015b818310156129e7576003830192508251603f8160121c1685015160f81b8252600182019150603f81600c1c1685015160f81b8252600182019150603f8160061c1685015160f81b8252600182019150603f811685015160f81b825260018201915050612980565b600389510660018114612a015760028114612a1157612a1c565b613d3d60f01b6002830352612a1c565b603d60f81b60018303525b50505050508093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9390615a23565b60405180910390fd5b612aa5816126fe565b15612ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adc90615a8f565b60405180910390fd5b612af3600083836001612cb4565b612afc816126fe565b15612b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3390615a8f565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c46600083836001612d35565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612cc084848484613036565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2690615b21565b60405180910390fd5b50505050565b50505050565b6000612d5c8473ffffffffffffffffffffffffffffffffffffffff16613194565b15612eb5578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d85611f66565b8786866040518563ffffffff1660e01b8152600401612da79493929190615b41565b6020604051808303816000875af1925050508015612de357506040513d601f19601f82011682018060405250810190612de09190615ba2565b60015b612e65573d8060008114612e13576040519150601f19603f3d011682016040523d82523d6000602084013e612e18565b606091505b506000815103612e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e54906158de565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612eba565b600190505b949350505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612f41577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612f3757612f36615935565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612f7e576d04ee2d6d415b85acef81000000008381612f7457612f73615935565b5b0492506020810190505b662386f26fc100008310612fad57662386f26fc100008381612fa357612fa2615935565b5b0492506010810190505b6305f5e1008310612fd6576305f5e1008381612fcc57612fcb615935565b5b0492506008810190505b6127108310612ffb576127108381612ff157612ff0615935565b5b0492506004810190505b6064831061301e576064838161301457613013615935565b5b0492506002810190505b600a831061302d576001810190505b80915050919050565b613042848484846131b7565b6001811115613086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307d90615c41565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130cd576130c8816131bd565b61310c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461310b5761310a8582613206565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361314e5761314981613373565b61318d565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461318c5761318b8482613444565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161321384610b2b565b61321d919061528a565b9050600060076000848152602001908152602001600020549050818114613302576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613387919061528a565b90506000600960008481526020019081526020016000205490506000600883815481106133b7576133b66143a5565b5b9060005260206000200154905080600883815481106133d9576133d86143a5565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061342857613427615c61565b5b6001900381819060005260206000200160009055905550505050565b600061344f83610b2b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6040518060600160405280600390602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61352e816134f9565b811461353957600080fd5b50565b60008135905061354b81613525565b92915050565b600060208284031215613567576135666134ef565b5b60006135758482850161353c565b91505092915050565b60008115159050919050565b6135938161357e565b82525050565b60006020820190506135ae600083018461358a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135ee5780820151818401526020810190506135d3565b60008484015250505050565b6000601f19601f8301169050919050565b6000613616826135b4565b61362081856135bf565b93506136308185602086016135d0565b613639816135fa565b840191505092915050565b6000602082019050818103600083015261365e818461360b565b905092915050565b6000819050919050565b61367981613666565b811461368457600080fd5b50565b60008135905061369681613670565b92915050565b6000602082840312156136b2576136b16134ef565b5b60006136c084828501613687565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136f4826136c9565b9050919050565b613704816136e9565b82525050565b600060208201905061371f60008301846136fb565b92915050565b61372e816136e9565b811461373957600080fd5b50565b60008135905061374b81613725565b92915050565b60008060408385031215613768576137676134ef565b5b60006137768582860161373c565b925050602061378785828601613687565b9150509250929050565b61379a81613666565b82525050565b60006020820190506137b56000830184613791565b92915050565b6000806000606084860312156137d4576137d36134ef565b5b60006137e28682870161373c565b93505060206137f38682870161373c565b925050604061380486828701613687565b9150509250925092565b6000819050919050565b600061383361382e613829846136c9565b61380e565b6136c9565b9050919050565b600061384582613818565b9050919050565b60006138578261383a565b9050919050565b6138678161384c565b82525050565b6000602082019050613882600083018461385e565b92915050565b60006138938261383a565b9050919050565b6138a381613888565b82525050565b60006020820190506138be600083018461389a565b92915050565b6000602082840312156138da576138d96134ef565b5b60006138e88482850161373c565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61392e826135fa565b810181811067ffffffffffffffff8211171561394d5761394c6138f6565b5b80604052505050565b60006139606134e5565b905061396c8282613925565b919050565b600067ffffffffffffffff82111561398c5761398b6138f6565b5b602082029050919050565b600080fd5b60006139af6139aa84613971565b613956565b905080602084028301858111156139c9576139c8613997565b5b835b818110156139f257806139de8882613687565b8452602084019350506020810190506139cb565b5050509392505050565b600082601f830112613a1157613a106138f1565b5b6010613a1e84828561399c565b91505092915050565b60006102008284031215613a3e57613a3d6134ef565b5b6000613a4c848285016139fc565b91505092915050565b600060039050919050565b600081905092915050565b6000819050919050565b613a7e81613666565b82525050565b6000613a908383613a75565b60208301905092915050565b6000602082019050919050565b613ab281613a55565b613abc8184613a60565b9250613ac782613a6b565b8060005b83811015613af8578151613adf8782613a84565b9650613aea83613a9c565b925050600181019050613acb565b505050505050565b6000606082019050613b156000830184613aa9565b92915050565b613b248161357e565b8114613b2f57600080fd5b50565b600081359050613b4181613b1b565b92915050565b60008060408385031215613b5e57613b5d6134ef565b5b6000613b6c8582860161373c565b9250506020613b7d85828601613b32565b9150509250929050565b60006080820190508181036000830152613ba1818761360b565b9050613bb06020830186613791565b613bbd6040830185613791565b613bca6060830184613791565b95945050505050565b600080fd5b600067ffffffffffffffff821115613bf357613bf26138f6565b5b613bfc826135fa565b9050602081019050919050565b82818337600083830152505050565b6000613c2b613c2684613bd8565b613956565b905082815260208101848484011115613c4757613c46613bd3565b5b613c52848285613c09565b509392505050565b600082601f830112613c6f57613c6e6138f1565b5b8135613c7f848260208601613c18565b91505092915050565b60008060008060808587031215613ca257613ca16134ef565b5b6000613cb08782880161373c565b9450506020613cc18782880161373c565b9350506040613cd287828801613687565b925050606085013567ffffffffffffffff811115613cf357613cf26134f4565b5b613cff87828801613c5a565b91505092959194509250565b600067ffffffffffffffff821115613d2657613d256138f6565b5b602082029050919050565b6000613d44613d3f84613d0b565b613956565b90508060208402830185811115613d5e57613d5d613997565b5b835b81811015613d875780613d738882613687565b845260208401935050602081019050613d60565b5050509392505050565b600082601f830112613da657613da56138f1565b5b6002613db3848285613d31565b91505092915050565b600067ffffffffffffffff821115613dd757613dd66138f6565b5b602082029050919050565b6000613df5613df084613dbc565b613956565b90508060408402830185811115613e0f57613e0e613997565b5b835b81811015613e385780613e248882613d91565b845260208401935050604081019050613e11565b5050509392505050565b600082601f830112613e5757613e566138f1565b5b6002613e64848285613de2565b91505092915050565b6000806000806103008587031215613e8857613e876134ef565b5b6000613e9687828801613d91565b9450506040613ea787828801613e42565b93505060c0613eb887828801613d91565b925050610100613eca878288016139fc565b91505092959194509250565b600067ffffffffffffffff821115613ef157613ef06138f6565b5b602082029050919050565b6000613f0f613f0a84613ed6565b613956565b90508060208402830185811115613f2957613f28613997565b5b835b81811015613f525780613f3e8882613687565b845260208401935050602081019050613f2b565b5050509392505050565b600082601f830112613f7157613f706138f1565b5b6003613f7e848285613efc565b91505092915050565b600060608284031215613f9d57613f9c6134ef565b5b6000613fab84828501613f5c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000613fdb82613fb4565b613fe58185613fbf565b9350613ff58185602086016135d0565b613ffe816135fa565b840191505092915050565b600060208201905081810360008301526140238184613fd0565b905092915050565b60008060408385031215614042576140416134ef565b5b60006140508582860161373c565b92505060206140618582860161373c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140b257607f821691505b6020821081036140c5576140c461406b565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006141276021836135bf565b9150614132826140cb565b604082019050919050565b600060208201905081810360008301526141568161411a565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006141b9603d836135bf565b91506141c48261415d565b604082019050919050565b600060208201905081810360008301526141e8816141ac565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b600061424b602d836135bf565b9150614256826141ef565b604082019050919050565b6000602082019050818103600083015261427a8161423e565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006142dd602b836135bf565b91506142e882614281565b604082019050919050565b6000602082019050818103600083015261430c816142d0565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061436f602c836135bf565b915061437a82614313565b604082019050919050565b6000602082019050818103600083015261439e81614362565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061440a6018836135bf565b9150614415826143d4565b602082019050919050565b60006020820190508181036000830152614439816143fd565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061449c6029836135bf565b91506144a782614440565b604082019050919050565b600060208201905081810360008301526144cb8161448f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061450c82613666565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361453e5761453d6144d2565b5b600182019050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006145a5602f836135bf565b91506145b082614549565b604082019050919050565b600060208201905081810360008301526145d481614598565b9050919050565b600067ffffffffffffffff8211156145f6576145f56138f6565b5b6145ff826135fa565b9050602081019050919050565b600061461f61461a846145db565b613956565b90508281526020810184848401111561463b5761463a613bd3565b5b6146468482856135d0565b509392505050565b600082601f830112614663576146626138f1565b5b815161467384826020860161460c565b91505092915050565b60008060408385031215614693576146926134ef565b5b600083015167ffffffffffffffff8111156146b1576146b06134f4565b5b6146bd8582860161464e565b925050602083015167ffffffffffffffff8111156146de576146dd6134f4565b5b6146ea8582860161464e565b9150509250929050565b60006020828403121561470a576147096134ef565b5b600082015167ffffffffffffffff811115614728576147276134f4565b5b6147348482850161464e565b91505092915050565b600081905092915050565b7f7b202261747472696275746573223a205b000000000000000000000000000000600082015250565b600061477e60118361473d565b915061478982614748565b601182019050919050565b7f7b2274726169745f74797065223a202249737375696e67205374617465222c2060008201527f2276616c7565223a202200000000000000000000000000000000000000000000602082015250565b60006147f0602a8361473d565b91506147fb82614794565b602a82019050919050565b6000614811826135b4565b61481b818561473d565b935061482b8185602086016135d0565b80840191505092915050565b7f227d2c7b2274726169745f74797065223a202246697273744e616d65222c202260008201527f76616c7565223a20220000000000000000000000000000000000000000000000602082015250565b600061489360298361473d565b915061489e82614837565b602982019050919050565b7f227d2c7b2274726169745f74797065223a20224c6173744e616d65222c20227660008201527f616c7565223a2022000000000000000000000000000000000000000000000000602082015250565b600061490560288361473d565b9150614910826148a9565b602882019050919050565b7f227d2c7b2274726169745f74797065223a202250617373706f7274204e756d6260008201527f6572222c202276616c7565223a20220000000000000000000000000000000000602082015250565b6000614977602f8361473d565b91506149828261491b565b602f82019050919050565b7f227d2c7b2274726169745f74797065223a20224e6174696f6e616c697479222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b60006149e9602b8361473d565b91506149f48261498d565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202244617465206f6620626972746860008201527f222c202276616c7565223a202200000000000000000000000000000000000000602082015250565b6000614a5b602d8361473d565b9150614a66826149ff565b602d82019050919050565b7f227d2c7b2274726169745f74797065223a202247656e646572222c202276616c60008201527f7565223a20220000000000000000000000000000000000000000000000000000602082015250565b6000614acd60268361473d565b9150614ad882614a71565b602682019050919050565b7f227d2c7b2274726169745f74797065223a20224578706972792064617465222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614b3f602b8361473d565b9150614b4a82614ae3565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202245787069726564222c2022766160008201527f6c7565223a202200000000000000000000000000000000000000000000000000602082015250565b6000614bb160278361473d565b9150614bbc82614b55565b602782019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bfd60028361473d565b9150614c0882614bc7565b600282019050919050565b7f5d2c000000000000000000000000000000000000000000000000000000000000600082015250565b6000614c4960028361473d565b9150614c5482614c13565b600282019050919050565b7f226465736372697074696f6e223a202250726f6f66206f662050617373706f7260008201527f742067756172616e7465657320706f7373657373696f6e206f6620612076616c60208201527f69642070617373706f72742e222c2265787465726e616c5f75726c223a20226860408201527f747470733a2f2f6769746875622e636f6d2f7a6b2d70617373706f72742f707260608201527f6f6f662d6f662d70617373706f7274222c22696d616765223a2022687474707360808201527f3a2f2f692e696d6775722e636f6d2f396b766574696a2e706e67222c226e616d60a08201527f65223a202250726f6f66206f662050617373706f72742023000000000000000060c082015250565b6000614d7960d88361473d565b9150614d8482614c5f565b60d882019050919050565b6000614d9a82614771565b9150614da5826147e3565b9150614db1828d614806565b9150614dbc82614886565b9150614dc8828c614806565b9150614dd3826148f8565b9150614ddf828b614806565b9150614dea8261496a565b9150614df6828a614806565b9150614e01826149dc565b9150614e0d8289614806565b9150614e1882614a4e565b9150614e248288614806565b9150614e2f82614ac0565b9150614e3b8287614806565b9150614e4682614b32565b9150614e528286614806565b9150614e5d82614ba4565b9150614e698285614806565b9150614e7482614bf0565b9150614e7f82614c3c565b9150614e8a82614d6c565b9150614e968284614806565b9150614ea182614bf0565b91508190509b9a5050505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614eeb601d8361473d565b9150614ef682614eb5565b601d82019050919050565b6000614f0c82614ede565b9150614f188284614806565b915081905092915050565b7f5369676e617475726520616c7265616479206e756c6c69666965640000000000600082015250565b6000614f59601b836135bf565b9150614f6482614f23565b602082019050919050565b60006020820190508181036000830152614f8881614f4c565b9050919050565b600060029050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b614fc581614f8f565b614fcf8184614f9a565b9250614fda82614fa5565b8060005b8381101561500b578151614ff28782613a84565b9650614ffd83614faf565b925050600181019050614fde565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b61504781614f8f565b6150518184615033565b925061505c82614fa5565b8060005b8381101561508d5781516150748782613a84565b965061507f83614faf565b925050600181019050615060565b505050505050565b60006150a1838361503e565b60408301905092915050565b6000602082019050919050565b6150c381615013565b6150cd818461501e565b92506150d882615029565b8060005b838110156151095781516150f08782615095565b96506150fb836150ad565b9250506001810190506150dc565b505050505050565b600060109050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b61514781615111565b615151818461511c565b925061515c82615127565b8060005b8381101561518d5781516151748782613a84565b965061517f83615131565b925050600181019050615160565b505050505050565b6000610300820190506151ab6000830187614fbc565b6151b860408301866150ba565b6151c560c0830185614fbc565b6151d361010083018461513e565b95945050505050565b6000815190506151eb81613b1b565b92915050565b600060208284031215615207576152066134ef565b5b6000615215848285016151dc565b91505092915050565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b6000615254600d836135bf565b915061525f8261521e565b602082019050919050565b6000602082019050818103600083015261528381615247565b9050919050565b600061529582613666565b91506152a083613666565b92508282039050818111156152b8576152b76144d2565b5b92915050565b60006152c982613666565b91506152d483613666565b92508282019050808211156152ec576152eb6144d2565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026153547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615317565b61535e8683615317565b95508019841693508086168417925050509392505050565b600061539161538c61538784613666565b61380e565b613666565b9050919050565b6000819050919050565b6153ab83615376565b6153bf6153b782615398565b848454615324565b825550505050565b600090565b6153d46153c7565b6153df8184846153a2565b505050565b5b81811015615403576153f86000826153cc565b6001810190506153e5565b5050565b601f82111561544857615419816152f2565b61542284615307565b81016020851015615431578190505b61544561543d85615307565b8301826153e4565b50505b505050565b600082821c905092915050565b600061546b6000198460080261544d565b1980831691505092915050565b6000615484838361545a565b9150826002028217905092915050565b61549d826135b4565b67ffffffffffffffff8111156154b6576154b56138f6565b5b6154c0825461409a565b6154cb828285615407565b600060209050601f8311600181146154fe57600084156154ec578287015190505b6154f68582615478565b86555061555e565b601f19841661550c866152f2565b60005b828110156155345784890151825560018201915060208501945060208101905061550f565b86831015615551578489015161554d601f89168261545a565b8355505b6001600288020188555050505b505050505050565b60008151905061557581613670565b92915050565b600060208284031215615591576155906134ef565b5b600061559f84828501615566565b91505092915050565b600060ff82169050919050565b60006155c0826155a8565b915060ff82036155d3576155d26144d2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061563a6026836135bf565b9150615645826155de565b604082019050919050565b600060208201905081810360008301526156698161562d565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006156cc6025836135bf565b91506156d782615670565b604082019050919050565b600060208201905081810360008301526156fb816156bf565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061575e6024836135bf565b915061576982615702565b604082019050919050565b6000602082019050818103600083015261578d81615751565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006157ca6020836135bf565b91506157d582615794565b602082019050919050565b600060208201905081810360008301526157f9816157bd565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006158366019836135bf565b915061584182615800565b602082019050919050565b6000602082019050818103600083015261586581615829565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006158c86032836135bf565b91506158d38261586c565b604082019050919050565b600060208201905081810360008301526158f7816158bb565b9050919050565b60006040820190508181036000830152615918818561360b565b9050818103602083015261592c818461360b565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061596f82613666565b915061597a83613666565b92508261598a57615989615935565b5b828204905092915050565b60006159a082613666565b91506159ab83613666565b92508282026159b981613666565b915082820484148315176159d0576159cf6144d2565b5b5092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615a0d6020836135bf565b9150615a18826159d7565b602082019050919050565b60006020820190508181036000830152615a3c81615a00565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615a79601c836135bf565b9150615a8482615a43565b602082019050919050565b60006020820190508181036000830152615aa881615a6c565b9050919050565b7f43616e6e6f74207472616e73666572202d2050726f6f66206f6620506173737060008201527f6f727420697320736f756c626f756e6400000000000000000000000000000000602082015250565b6000615b0b6030836135bf565b9150615b1682615aaf565b604082019050919050565b60006020820190508181036000830152615b3a81615afe565b9050919050565b6000608082019050615b5660008301876136fb565b615b6360208301866136fb565b615b706040830185613791565b8181036060830152615b828184613fd0565b905095945050505050565b600081519050615b9c81613525565b92915050565b600060208284031215615bb857615bb76134ef565b5b6000615bc684828501615b8d565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000615c2b6035836135bf565b9150615c3682615bcf565b604082019050919050565b60006020820190508181036000830152615c5a81615c1e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220fef4d2bd805817fccea2e50e7cba6d5947b65319eed8284ae10c75fd49f3cabd64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a611610104578063c87b56dd116100a2578063dc54daf011610071578063dc54daf014610569578063e985e9c514610599578063eba11e05146105c9578063f2fde38b146105e7576101cf565b8063c87b56dd146104bd578063d21e82ab146104ed578063d4d9c00f1461051d578063d9548e5314610539576101cf565b806395d89b41116100de57806395d89b4114610434578063a22cb46514610452578063b04e3a3b1461046e578063b88d4fde146104a1576101cf565b8063715018a6146103dc57806376e6a447146103e65780638da5cb5b14610416576101cf565b80632f745c59116101715780634f6ccce71161014b5780634f6ccce71461033057806354f96d52146103605780636352211e1461037c57806370a08231146103ac576101cf565b80632f745c59146102c65780633a41515f146102f657806342842e0e14610314576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806318160ddd1461026e57806323b872dd1461028c5780632b7ac3f3146102a8576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e99190613551565b610603565b6040516101fb9190613599565b60405180910390f35b61020c61067d565b6040516102199190613644565b60405180910390f35b61023c6004803603810190610237919061369c565b61070f565b604051610249919061370a565b60405180910390f35b61026c60048036038101906102679190613751565b610755565b005b61027661086c565b60405161028391906137a0565b60405180910390f35b6102a660048036038101906102a191906137bb565b610879565b005b6102b06108d9565b6040516102bd919061386d565b60405180910390f35b6102e060048036038101906102db9190613751565b6108fd565b6040516102ed91906137a0565b60405180910390f35b6102fe6109a2565b60405161030b91906138a9565b60405180910390f35b61032e600480360381019061032991906137bb565b6109c8565b005b61034a6004803603810190610345919061369c565b6109e8565b60405161035791906137a0565b60405180910390f35b61037a600480360381019061037591906138c4565b610a59565b005b6103966004803603810190610391919061369c565b610aa5565b6040516103a3919061370a565b60405180910390f35b6103c660048036038101906103c191906138c4565b610b2b565b6040516103d391906137a0565b60405180910390f35b6103e4610be2565b005b61040060048036038101906103fb9190613a27565b610bf6565b60405161040d9190613b00565b60405180910390f35b61041e610c63565b60405161042b919061370a565b60405180910390f35b61043c610c8d565b6040516104499190613644565b60405180910390f35b61046c60048036038101906104679190613b47565b610d1f565b005b6104886004803603810190610483919061369c565b610d35565b6040516104989493929190613b87565b60405180910390f35b6104bb60048036038101906104b69190613c88565b610dfd565b005b6104d760048036038101906104d2919061369c565b610e5f565b6040516104e49190613644565b60405180910390f35b6105076004803603810190610502919061369c565b6114cc565b6040516105149190613599565b60405180910390f35b61053760048036038101906105329190613e6d565b6114ec565b005b610553600480360381019061054e919061369c565b6119ea565b6040516105609190613599565b60405180910390f35b610583600480360381019061057e9190613f87565b611b9c565b6040516105909190614009565b60405180910390f35b6105b360048036038101906105ae919061402b565b611cfc565b6040516105c09190613599565b60405180910390f35b6105d1611d90565b6040516105de919061370a565b60405180910390f35b61060160048036038101906105fc91906138c4565b611db6565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610676575061067582611e39565b5b9050919050565b60606000805461068c9061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546106b89061409a565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061071a82611f1b565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076082610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c79061413d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107ef611f66565b73ffffffffffffffffffffffffffffffffffffffff16148061081e575061081d81610818611f66565b611cfc565b5b61085d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610854906141cf565b60405180910390fd5b6108678383611f6e565b505050565b6000600880549050905090565b61088a610884611f66565b82612027565b6108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090614261565b60405180910390fd5b6108d48383836120bc565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090883610b2b565b8210610949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610940906142f3565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e383838360405180602001604052806000815250610dfd565b505050565b60006109f261086c565b8210610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a90614385565b60405180910390fd5b60088281548110610a4757610a466143a5565b5b90600052602060002001549050919050565b610a616123b5565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610ab183612433565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990614420565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906144b2565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bea6123b5565b610bf46000612470565b565b610bfe6134c3565b610c066134c3565b60005b6003811015610c5957838160108110610c2557610c246143a5565b5b6020020151828260038110610c3d57610c3c6143a5565b5b6020020181815250508080610c5190614501565b915050610c09565b5080915050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c9c9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc89061409a565b8015610d155780601f10610cea57610100808354040283529160200191610d15565b820191906000526020600020905b815481529060010190602001808311610cf857829003601f168201915b5050505050905090565b610d31610d2a611f66565b8383612536565b5050565b600e8181548110610d4557600080fd5b9060005260206000209060040201600091509050806000018054610d689061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d949061409a565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050908060010154908060020154908060030154905084565b610e0e610e08611f66565b83612027565b610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4490614261565b60405180910390fd5b610e59848484846126a2565b50505050565b6060610e6a826126fe565b610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea0906145bb565b60405180910390fd5b6000600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015610f88578382018054610efb9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610f279061409a565b8015610f745780601f10610f4957610100808354040283529160200191610f74565b820191906000526020600020905b815481529060010190602001808311610f5757829003601f168201915b505050505081526020019060010190610ee5565b50505050815250509050610fed6040518060400160405280601981526020017f49737375696e6720737461746520696e20746f6b656e555249000000000000008152508260000151600060078110610fe357610fe26143a5565b5b602002015161273f565b606080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630903cd028460000151600160078110611046576110456143a5565b5b60200201516040518263ffffffff1660e01b81526004016110679190613644565b600060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906110ad919061467c565b80925081935050506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed856000015160006007811061110d5761110c6143a5565b5b60200201516040518263ffffffff1660e01b815260040161112e9190613644565b600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061117491906146f4565b8383866000015160026007811061118e5761118d6143a5565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed89600001516003600781106111e9576111e86143a5565b5b60200201516040518263ffffffff1660e01b815260040161120a9190613644565b600060405180830381865afa158015611227573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061125091906146f4565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8a600001516004600781106112a6576112a56143a5565b5b60200201516040518263ffffffff1660e01b81526004016112c79190613644565b600060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130d91906146f4565b8960000151600560078110611325576113246143a5565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8c600001516006600781106113805761137f6143a5565b5b60200201516040518263ffffffff1660e01b81526004016113a19190613644565b600060405180830381865afa1580156113be573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113e791906146f4565b6113f08e6119ea565b61142f576040518060400160405280600281526020017f4e6f000000000000000000000000000000000000000000000000000000000000815250611466565b6040518060400160405280600381526020017f59657300000000000000000000000000000000000000000000000000000000008152505b61146f8f6127db565b6040516020016114889a99989796959493929190614d8f565b60405160208183030381529060405290506114a2816128a9565b6040516020016114b29190614f01565b604051602081830303815290604052945050505050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600d600082600360108110611504576115036143a5565b5b6020020151815260200190815260200160002060009054906101000a900460ff1615611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90614f6f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c82febf5858585856040518563ffffffff1660e01b81526004016115c49493929190615195565b602060405180830381865afa1580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160591906151f1565b611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b9061526a565b60405180910390fd5b60008160016010611655919061528a565b60108110611666576116656143a5565b5b60200201519050600061167761086c565b90506116838282612a2d565b6001600d60008560036010811061169d5761169c6143a5565b5b6020020151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006116d284610bf6565b905060006116df82611b9c565b90506000600f6000858152602001908152602001600020905060005b600e805490508110156119de576000600e828154811061171e5761171d6143a5565b5b90600052602060002090600402016040518060800160405290816000820180546117479061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546117739061409a565b80156117c05780601f10611795576101008083540402835291602001916117c0565b820191906000526020600020905b8154815290600101906020018083116117a357829003601f168201915b50505050508152602001600182015481526020016002820154815260200160038201548152505090506000600182602001518360400151611801919061528a565b61180b91906152be565b67ffffffffffffffff811115611824576118236138f6565b5b6040519080825280601f01601f1916602001820160405280156118565781602001600182028036833780820191505090505b5090506000826020015190505b826040015181116118f057858181518110611881576118806143a5565b5b602001015160f81c60f81b8284602001518361189d919061528a565b815181106118ae576118ad6143a5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806118e890614501565b915050611863565b5060008190508085600001856007811061190d5761190c6143a5565b5b01908161191a9190615494565b506119c88360000151866000018660078110611939576119386143a5565b5b0180546119459061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546119719061409a565b80156119be5780601f10611993576101008083540402835291602001916119be565b820191906000526020600020905b8154815290600101906020018083116119a157829003601f168201915b505050505061273f565b50505080806119d690614501565b9150506116fb565b50505050505050505050565b600080600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015611aca578382018054611a3d9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a699061409a565b8015611ab65780601f10611a8b57610100808354040283529160200191611ab6565b820191906000526020600020905b815481529060010190602001808311611a9957829003601f168201915b505050505081526020019060010190611a27565b505050508152505090506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc0bb5d48360000151600660078110611b2c57611b2b6143a5565b5b60200201516040518263ffffffff1660e01b8152600401611b4d9190613644565b602060405180830381865afa158015611b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8e919061557b565b905080421192505050919050565b606060006040518060600160405280601f60ff168152602001601f60ff168152602001601a60ff1681525090506000605867ffffffffffffffff811115611be657611be56138f6565b5b6040519080825280601f01601f191660200182016040528015611c185781602001600182028036833780820191505090505b5090506000805b6003811015611cf0576000868260038110611c3d57611c3c6143a5565b5b6020020151905060005b858360038110611c5a57611c596143a5565b5b602002015160ff168160ff161015611cdb5760ff821660f81b858580611c7f90614501565b965081518110611c9257611c916143a5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600882901c91508080611cd3906155b5565b915050611c47565b50508080611ce890614501565b915050611c1f565b50819350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611dbe6123b5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2490615650565b60405180910390fd5b611e3681612470565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f0457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f145750611f1382612c4a565b5b9050919050565b611f24816126fe565b611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a90614420565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611fe183610aa5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061203383610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061207557506120748185611cfc565b5b806120b357508373ffffffffffffffffffffffffffffffffffffffff1661209b8461070f565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166120dc82610aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612132576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612129906156e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219890615774565b60405180910390fd5b6121ae8383836001612cb4565b8273ffffffffffffffffffffffffffffffffffffffff166121ce82610aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b906156e2565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123b08383836001612d35565b505050565b6123bd611f66565b73ffffffffffffffffffffffffffffffffffffffff166123db610c63565b73ffffffffffffffffffffffffffffffffffffffff1614612431576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612428906157e0565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259b9061584c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126959190613599565b60405180910390a3505050565b6126ad8484846120bc565b6126b984848484612d3b565b6126f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ef906158de565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff1661272083612433565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6127d782826040516024016127559291906158fe565b6040516020818303038152906040527f4b5c4277000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612ec2565b5050565b6060600060016127ea84612ee3565b01905060008167ffffffffffffffff811115612809576128086138f6565b5b6040519080825280601f01601f19166020018201604052801561283b5781602001600182028036833780820191505090505b509050600082602001820190505b60011561289e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161289257612891615935565b5b04945060008503612849575b819350505050919050565b606060008251036128cb57604051806020016040528060008152509050612a28565b6000604051806060016040528060408152602001615c9160409139905060006003600285516128fa91906152be565b6129049190615964565b60046129109190615995565b9050600060208261292191906152be565b67ffffffffffffffff81111561293a576129396138f6565b5b6040519080825280601f01601f19166020018201604052801561296c5781602001600182028036833780820191505090505b509050818152600183018586518101602084015b818310156129e7576003830192508251603f8160121c1685015160f81b8252600182019150603f81600c1c1685015160f81b8252600182019150603f8160061c1685015160f81b8252600182019150603f811685015160f81b825260018201915050612980565b600389510660018114612a015760028114612a1157612a1c565b613d3d60f01b6002830352612a1c565b603d60f81b60018303525b50505050508093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9390615a23565b60405180910390fd5b612aa5816126fe565b15612ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adc90615a8f565b60405180910390fd5b612af3600083836001612cb4565b612afc816126fe565b15612b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3390615a8f565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c46600083836001612d35565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612cc084848484613036565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2690615b21565b60405180910390fd5b50505050565b50505050565b6000612d5c8473ffffffffffffffffffffffffffffffffffffffff16613194565b15612eb5578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d85611f66565b8786866040518563ffffffff1660e01b8152600401612da79493929190615b41565b6020604051808303816000875af1925050508015612de357506040513d601f19601f82011682018060405250810190612de09190615ba2565b60015b612e65573d8060008114612e13576040519150601f19603f3d011682016040523d82523d6000602084013e612e18565b606091505b506000815103612e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e54906158de565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612eba565b600190505b949350505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612f41577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612f3757612f36615935565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612f7e576d04ee2d6d415b85acef81000000008381612f7457612f73615935565b5b0492506020810190505b662386f26fc100008310612fad57662386f26fc100008381612fa357612fa2615935565b5b0492506010810190505b6305f5e1008310612fd6576305f5e1008381612fcc57612fcb615935565b5b0492506008810190505b6127108310612ffb576127108381612ff157612ff0615935565b5b0492506004810190505b6064831061301e576064838161301457613013615935565b5b0492506002810190505b600a831061302d576001810190505b80915050919050565b613042848484846131b7565b6001811115613086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307d90615c41565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130cd576130c8816131bd565b61310c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461310b5761310a8582613206565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361314e5761314981613373565b61318d565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461318c5761318b8482613444565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161321384610b2b565b61321d919061528a565b9050600060076000848152602001908152602001600020549050818114613302576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613387919061528a565b90506000600960008481526020019081526020016000205490506000600883815481106133b7576133b66143a5565b5b9060005260206000200154905080600883815481106133d9576133d86143a5565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061342857613427615c61565b5b6001900381819060005260206000200160009055905550505050565b600061344f83610b2b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6040518060600160405280600390602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61352e816134f9565b811461353957600080fd5b50565b60008135905061354b81613525565b92915050565b600060208284031215613567576135666134ef565b5b60006135758482850161353c565b91505092915050565b60008115159050919050565b6135938161357e565b82525050565b60006020820190506135ae600083018461358a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135ee5780820151818401526020810190506135d3565b60008484015250505050565b6000601f19601f8301169050919050565b6000613616826135b4565b61362081856135bf565b93506136308185602086016135d0565b613639816135fa565b840191505092915050565b6000602082019050818103600083015261365e818461360b565b905092915050565b6000819050919050565b61367981613666565b811461368457600080fd5b50565b60008135905061369681613670565b92915050565b6000602082840312156136b2576136b16134ef565b5b60006136c084828501613687565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136f4826136c9565b9050919050565b613704816136e9565b82525050565b600060208201905061371f60008301846136fb565b92915050565b61372e816136e9565b811461373957600080fd5b50565b60008135905061374b81613725565b92915050565b60008060408385031215613768576137676134ef565b5b60006137768582860161373c565b925050602061378785828601613687565b9150509250929050565b61379a81613666565b82525050565b60006020820190506137b56000830184613791565b92915050565b6000806000606084860312156137d4576137d36134ef565b5b60006137e28682870161373c565b93505060206137f38682870161373c565b925050604061380486828701613687565b9150509250925092565b6000819050919050565b600061383361382e613829846136c9565b61380e565b6136c9565b9050919050565b600061384582613818565b9050919050565b60006138578261383a565b9050919050565b6138678161384c565b82525050565b6000602082019050613882600083018461385e565b92915050565b60006138938261383a565b9050919050565b6138a381613888565b82525050565b60006020820190506138be600083018461389a565b92915050565b6000602082840312156138da576138d96134ef565b5b60006138e88482850161373c565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61392e826135fa565b810181811067ffffffffffffffff8211171561394d5761394c6138f6565b5b80604052505050565b60006139606134e5565b905061396c8282613925565b919050565b600067ffffffffffffffff82111561398c5761398b6138f6565b5b602082029050919050565b600080fd5b60006139af6139aa84613971565b613956565b905080602084028301858111156139c9576139c8613997565b5b835b818110156139f257806139de8882613687565b8452602084019350506020810190506139cb565b5050509392505050565b600082601f830112613a1157613a106138f1565b5b6010613a1e84828561399c565b91505092915050565b60006102008284031215613a3e57613a3d6134ef565b5b6000613a4c848285016139fc565b91505092915050565b600060039050919050565b600081905092915050565b6000819050919050565b613a7e81613666565b82525050565b6000613a908383613a75565b60208301905092915050565b6000602082019050919050565b613ab281613a55565b613abc8184613a60565b9250613ac782613a6b565b8060005b83811015613af8578151613adf8782613a84565b9650613aea83613a9c565b925050600181019050613acb565b505050505050565b6000606082019050613b156000830184613aa9565b92915050565b613b248161357e565b8114613b2f57600080fd5b50565b600081359050613b4181613b1b565b92915050565b60008060408385031215613b5e57613b5d6134ef565b5b6000613b6c8582860161373c565b9250506020613b7d85828601613b32565b9150509250929050565b60006080820190508181036000830152613ba1818761360b565b9050613bb06020830186613791565b613bbd6040830185613791565b613bca6060830184613791565b95945050505050565b600080fd5b600067ffffffffffffffff821115613bf357613bf26138f6565b5b613bfc826135fa565b9050602081019050919050565b82818337600083830152505050565b6000613c2b613c2684613bd8565b613956565b905082815260208101848484011115613c4757613c46613bd3565b5b613c52848285613c09565b509392505050565b600082601f830112613c6f57613c6e6138f1565b5b8135613c7f848260208601613c18565b91505092915050565b60008060008060808587031215613ca257613ca16134ef565b5b6000613cb08782880161373c565b9450506020613cc18782880161373c565b9350506040613cd287828801613687565b925050606085013567ffffffffffffffff811115613cf357613cf26134f4565b5b613cff87828801613c5a565b91505092959194509250565b600067ffffffffffffffff821115613d2657613d256138f6565b5b602082029050919050565b6000613d44613d3f84613d0b565b613956565b90508060208402830185811115613d5e57613d5d613997565b5b835b81811015613d875780613d738882613687565b845260208401935050602081019050613d60565b5050509392505050565b600082601f830112613da657613da56138f1565b5b6002613db3848285613d31565b91505092915050565b600067ffffffffffffffff821115613dd757613dd66138f6565b5b602082029050919050565b6000613df5613df084613dbc565b613956565b90508060408402830185811115613e0f57613e0e613997565b5b835b81811015613e385780613e248882613d91565b845260208401935050604081019050613e11565b5050509392505050565b600082601f830112613e5757613e566138f1565b5b6002613e64848285613de2565b91505092915050565b6000806000806103008587031215613e8857613e876134ef565b5b6000613e9687828801613d91565b9450506040613ea787828801613e42565b93505060c0613eb887828801613d91565b925050610100613eca878288016139fc565b91505092959194509250565b600067ffffffffffffffff821115613ef157613ef06138f6565b5b602082029050919050565b6000613f0f613f0a84613ed6565b613956565b90508060208402830185811115613f2957613f28613997565b5b835b81811015613f525780613f3e8882613687565b845260208401935050602081019050613f2b565b5050509392505050565b600082601f830112613f7157613f706138f1565b5b6003613f7e848285613efc565b91505092915050565b600060608284031215613f9d57613f9c6134ef565b5b6000613fab84828501613f5c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000613fdb82613fb4565b613fe58185613fbf565b9350613ff58185602086016135d0565b613ffe816135fa565b840191505092915050565b600060208201905081810360008301526140238184613fd0565b905092915050565b60008060408385031215614042576140416134ef565b5b60006140508582860161373c565b92505060206140618582860161373c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140b257607f821691505b6020821081036140c5576140c461406b565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006141276021836135bf565b9150614132826140cb565b604082019050919050565b600060208201905081810360008301526141568161411a565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006141b9603d836135bf565b91506141c48261415d565b604082019050919050565b600060208201905081810360008301526141e8816141ac565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b600061424b602d836135bf565b9150614256826141ef565b604082019050919050565b6000602082019050818103600083015261427a8161423e565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006142dd602b836135bf565b91506142e882614281565b604082019050919050565b6000602082019050818103600083015261430c816142d0565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061436f602c836135bf565b915061437a82614313565b604082019050919050565b6000602082019050818103600083015261439e81614362565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061440a6018836135bf565b9150614415826143d4565b602082019050919050565b60006020820190508181036000830152614439816143fd565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061449c6029836135bf565b91506144a782614440565b604082019050919050565b600060208201905081810360008301526144cb8161448f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061450c82613666565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361453e5761453d6144d2565b5b600182019050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006145a5602f836135bf565b91506145b082614549565b604082019050919050565b600060208201905081810360008301526145d481614598565b9050919050565b600067ffffffffffffffff8211156145f6576145f56138f6565b5b6145ff826135fa565b9050602081019050919050565b600061461f61461a846145db565b613956565b90508281526020810184848401111561463b5761463a613bd3565b5b6146468482856135d0565b509392505050565b600082601f830112614663576146626138f1565b5b815161467384826020860161460c565b91505092915050565b60008060408385031215614693576146926134ef565b5b600083015167ffffffffffffffff8111156146b1576146b06134f4565b5b6146bd8582860161464e565b925050602083015167ffffffffffffffff8111156146de576146dd6134f4565b5b6146ea8582860161464e565b9150509250929050565b60006020828403121561470a576147096134ef565b5b600082015167ffffffffffffffff811115614728576147276134f4565b5b6147348482850161464e565b91505092915050565b600081905092915050565b7f7b202261747472696275746573223a205b000000000000000000000000000000600082015250565b600061477e60118361473d565b915061478982614748565b601182019050919050565b7f7b2274726169745f74797065223a202249737375696e67205374617465222c2060008201527f2276616c7565223a202200000000000000000000000000000000000000000000602082015250565b60006147f0602a8361473d565b91506147fb82614794565b602a82019050919050565b6000614811826135b4565b61481b818561473d565b935061482b8185602086016135d0565b80840191505092915050565b7f227d2c7b2274726169745f74797065223a202246697273744e616d65222c202260008201527f76616c7565223a20220000000000000000000000000000000000000000000000602082015250565b600061489360298361473d565b915061489e82614837565b602982019050919050565b7f227d2c7b2274726169745f74797065223a20224c6173744e616d65222c20227660008201527f616c7565223a2022000000000000000000000000000000000000000000000000602082015250565b600061490560288361473d565b9150614910826148a9565b602882019050919050565b7f227d2c7b2274726169745f74797065223a202250617373706f7274204e756d6260008201527f6572222c202276616c7565223a20220000000000000000000000000000000000602082015250565b6000614977602f8361473d565b91506149828261491b565b602f82019050919050565b7f227d2c7b2274726169745f74797065223a20224e6174696f6e616c697479222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b60006149e9602b8361473d565b91506149f48261498d565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202244617465206f6620626972746860008201527f222c202276616c7565223a202200000000000000000000000000000000000000602082015250565b6000614a5b602d8361473d565b9150614a66826149ff565b602d82019050919050565b7f227d2c7b2274726169745f74797065223a202247656e646572222c202276616c60008201527f7565223a20220000000000000000000000000000000000000000000000000000602082015250565b6000614acd60268361473d565b9150614ad882614a71565b602682019050919050565b7f227d2c7b2274726169745f74797065223a20224578706972792064617465222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614b3f602b8361473d565b9150614b4a82614ae3565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202245787069726564222c2022766160008201527f6c7565223a202200000000000000000000000000000000000000000000000000602082015250565b6000614bb160278361473d565b9150614bbc82614b55565b602782019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bfd60028361473d565b9150614c0882614bc7565b600282019050919050565b7f5d2c000000000000000000000000000000000000000000000000000000000000600082015250565b6000614c4960028361473d565b9150614c5482614c13565b600282019050919050565b7f226465736372697074696f6e223a202250726f6f66206f662050617373706f7260008201527f742067756172616e7465657320706f7373657373696f6e206f6620612076616c60208201527f69642070617373706f72742e222c2265787465726e616c5f75726c223a20226860408201527f747470733a2f2f6769746875622e636f6d2f7a6b2d70617373706f72742f707260608201527f6f6f662d6f662d70617373706f7274222c22696d616765223a2022687474707360808201527f3a2f2f692e696d6775722e636f6d2f396b766574696a2e706e67222c226e616d60a08201527f65223a202250726f6f66206f662050617373706f72742023000000000000000060c082015250565b6000614d7960d88361473d565b9150614d8482614c5f565b60d882019050919050565b6000614d9a82614771565b9150614da5826147e3565b9150614db1828d614806565b9150614dbc82614886565b9150614dc8828c614806565b9150614dd3826148f8565b9150614ddf828b614806565b9150614dea8261496a565b9150614df6828a614806565b9150614e01826149dc565b9150614e0d8289614806565b9150614e1882614a4e565b9150614e248288614806565b9150614e2f82614ac0565b9150614e3b8287614806565b9150614e4682614b32565b9150614e528286614806565b9150614e5d82614ba4565b9150614e698285614806565b9150614e7482614bf0565b9150614e7f82614c3c565b9150614e8a82614d6c565b9150614e968284614806565b9150614ea182614bf0565b91508190509b9a5050505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614eeb601d8361473d565b9150614ef682614eb5565b601d82019050919050565b6000614f0c82614ede565b9150614f188284614806565b915081905092915050565b7f5369676e617475726520616c7265616479206e756c6c69666965640000000000600082015250565b6000614f59601b836135bf565b9150614f6482614f23565b602082019050919050565b60006020820190508181036000830152614f8881614f4c565b9050919050565b600060029050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b614fc581614f8f565b614fcf8184614f9a565b9250614fda82614fa5565b8060005b8381101561500b578151614ff28782613a84565b9650614ffd83614faf565b925050600181019050614fde565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b61504781614f8f565b6150518184615033565b925061505c82614fa5565b8060005b8381101561508d5781516150748782613a84565b965061507f83614faf565b925050600181019050615060565b505050505050565b60006150a1838361503e565b60408301905092915050565b6000602082019050919050565b6150c381615013565b6150cd818461501e565b92506150d882615029565b8060005b838110156151095781516150f08782615095565b96506150fb836150ad565b9250506001810190506150dc565b505050505050565b600060109050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b61514781615111565b615151818461511c565b925061515c82615127565b8060005b8381101561518d5781516151748782613a84565b965061517f83615131565b925050600181019050615160565b505050505050565b6000610300820190506151ab6000830187614fbc565b6151b860408301866150ba565b6151c560c0830185614fbc565b6151d361010083018461513e565b95945050505050565b6000815190506151eb81613b1b565b92915050565b600060208284031215615207576152066134ef565b5b6000615215848285016151dc565b91505092915050565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b6000615254600d836135bf565b915061525f8261521e565b602082019050919050565b6000602082019050818103600083015261528381615247565b9050919050565b600061529582613666565b91506152a083613666565b92508282039050818111156152b8576152b76144d2565b5b92915050565b60006152c982613666565b91506152d483613666565b92508282019050808211156152ec576152eb6144d2565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026153547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615317565b61535e8683615317565b95508019841693508086168417925050509392505050565b600061539161538c61538784613666565b61380e565b613666565b9050919050565b6000819050919050565b6153ab83615376565b6153bf6153b782615398565b848454615324565b825550505050565b600090565b6153d46153c7565b6153df8184846153a2565b505050565b5b81811015615403576153f86000826153cc565b6001810190506153e5565b5050565b601f82111561544857615419816152f2565b61542284615307565b81016020851015615431578190505b61544561543d85615307565b8301826153e4565b50505b505050565b600082821c905092915050565b600061546b6000198460080261544d565b1980831691505092915050565b6000615484838361545a565b9150826002028217905092915050565b61549d826135b4565b67ffffffffffffffff8111156154b6576154b56138f6565b5b6154c0825461409a565b6154cb828285615407565b600060209050601f8311600181146154fe57600084156154ec578287015190505b6154f68582615478565b86555061555e565b601f19841661550c866152f2565b60005b828110156155345784890151825560018201915060208501945060208101905061550f565b86831015615551578489015161554d601f89168261545a565b8355505b6001600288020188555050505b505050505050565b60008151905061557581613670565b92915050565b600060208284031215615591576155906134ef565b5b600061559f84828501615566565b91505092915050565b600060ff82169050919050565b60006155c0826155a8565b915060ff82036155d3576155d26144d2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061563a6026836135bf565b9150615645826155de565b604082019050919050565b600060208201905081810360008301526156698161562d565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006156cc6025836135bf565b91506156d782615670565b604082019050919050565b600060208201905081810360008301526156fb816156bf565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061575e6024836135bf565b915061576982615702565b604082019050919050565b6000602082019050818103600083015261578d81615751565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006157ca6020836135bf565b91506157d582615794565b602082019050919050565b600060208201905081810360008301526157f9816157bd565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006158366019836135bf565b915061584182615800565b602082019050919050565b6000602082019050818103600083015261586581615829565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006158c86032836135bf565b91506158d38261586c565b604082019050919050565b600060208201905081810360008301526158f7816158bb565b9050919050565b60006040820190508181036000830152615918818561360b565b9050818103602083015261592c818461360b565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061596f82613666565b915061597a83613666565b92508261598a57615989615935565b5b828204905092915050565b60006159a082613666565b91506159ab83613666565b92508282026159b981613666565b915082820484148315176159d0576159cf6144d2565b5b5092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615a0d6020836135bf565b9150615a18826159d7565b602082019050919050565b60006020820190508181036000830152615a3c81615a00565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615a79601c836135bf565b9150615a8482615a43565b602082019050919050565b60006020820190508181036000830152615aa881615a6c565b9050919050565b7f43616e6e6f74207472616e73666572202d2050726f6f66206f6620506173737060008201527f6f727420697320736f756c626f756e6400000000000000000000000000000000602082015250565b6000615b0b6030836135bf565b9150615b1682615aaf565b604082019050919050565b60006020820190508181036000830152615b3a81615afe565b9050919050565b6000608082019050615b5660008301876136fb565b615b6360208301866136fb565b615b706040830185613791565b8181036060830152615b828184613fd0565b905095945050505050565b600081519050615b9c81613525565b92915050565b600060208284031215615bb857615bb76134ef565b5b6000615bc684828501615b8d565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000615c2b6035836135bf565b9150615c3682615bcf565b604082019050919050565b60006020820190508181036000830152615c5a81615c1e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220fef4d2bd805817fccea2e50e7cba6d5947b65319eed8284ae10c75fd49f3cabd64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/app/deployments/addresses.json b/app/deployments/addresses.json index 19b48a62e..09a89916d 100644 --- a/app/deployments/addresses.json +++ b/app/deployments/addresses.json @@ -1 +1 @@ -{"ProofOfPassport":"0x7D459347d092D35f043f73021f06c19f834f8c3E","Groth16Verifier":"0x72d8Fb7Dd33c264b53D313ff3BF25D993c0AD050"} \ No newline at end of file +{"ProofOfPassport":"0x50c47Be849dFac1FCbEDa031425896AF49d9FDFC","Groth16Verifier":"0xD6F5CA79b90a9E20B38df773122B4f50a1fda317"} \ No newline at end of file diff --git a/contracts/contracts/Verifier.sol b/contracts/contracts/Verifier.sol index c03a22c5f..09a711651 100644 --- a/contracts/contracts/Verifier.sol +++ b/contracts/contracts/Verifier.sol @@ -37,10 +37,10 @@ contract Groth16Verifier { uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; - uint256 constant deltax1 = 5158657673473810045925629964893931934396421913559601447267267658396071743665; - uint256 constant deltax2 = 8286629771124207111815437373369130047259708345487751914706319082298992258648; - uint256 constant deltay1 = 14545436190214639873248337492095744803903195053244079026886824280836378774783; - uint256 constant deltay2 = 14499178695372120851688441035289532294041310913789284405303366635503099586282; + uint256 constant deltax1 = 13332829983292634874659240068294550011141456103652018916224391594481625590699; + uint256 constant deltax2 = 21775687996720864507552980920389387944496604814608793381435179673741251662482; + uint256 constant deltay1 = 15444510239488592734510692256596834816736560818857866493410444065736122722029; + uint256 constant deltay2 = 12213750345729207307537910743738626761327252153590563067440130819625419372191; uint256 constant IC0x = 4897812530436581420070048815704719785256466787655503857610889333796081821201; diff --git a/contracts/hardhat.config.ts b/contracts/hardhat.config.ts index 5191b3751..7dec0d9b6 100644 --- a/contracts/hardhat.config.ts +++ b/contracts/hardhat.config.ts @@ -18,6 +18,10 @@ const config: HardhatUserConfig = { mumbai: { url: "https://polygon-mumbai-bor.publicnode.com", accounts: [process.env.PKEY as string], + }, + sepolia: { + url: "https://rpc.notadegen.com/eth/sepolia", + accounts: [process.env.PKEY as string], } }, };