@coti-io/coti-contracts 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +3 -115
  2. package/contracts/mocks/README.md +1 -1
  3. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +105 -280
  4. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +83 -187
  5. package/contracts/mocks/utils/mpc/{Comparison1Tests.Contract.sol → Comparison1TestsContract.sol} +67 -115
  6. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +68 -116
  7. package/contracts/mocks/utils/mpc/MinMaxTestsContract.sol +69 -164
  8. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +70 -52
  9. package/contracts/mocks/utils/mpc/MiscellaneousTestsContract.sol +270 -0
  10. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +102 -0
  11. package/contracts/mocks/utils/mpc/README.md +12 -12
  12. package/contracts/mocks/utils/mpc/TransferScalarTestsContract.sol +54 -211
  13. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +162 -640
  14. package/contracts/onboard/AccountOnboard.sol +3 -3
  15. package/contracts/utils/mpc/MpcCore.sol +2835 -988
  16. package/contracts/utils/mpc/MpcInterface.sol +6 -4
  17. package/hardhat.config.ts +8 -5
  18. package/package.json +2 -2
  19. package/test/utils/accounts.ts +1 -1
  20. package/test/utils/mpc/Precompile.test.ts +26 -37
  21. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/ArithmeticTestsContract.ts +374 -0
  22. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/PrecompilesArythmeticTestsContract.ts +374 -0
  23. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/index.ts +5 -0
  24. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.ts +30 -10
  25. package/typechain-types/contracts/mocks/utils/mpc/BitwiseTestsContract.ts +39 -5
  26. package/typechain-types/contracts/mocks/utils/mpc/Comparison1TestsContract.ts +374 -0
  27. package/typechain-types/contracts/mocks/utils/mpc/Comparison2TestsContract.ts +39 -5
  28. package/typechain-types/contracts/mocks/utils/mpc/MinMaxTestsContract.ts +25 -5
  29. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.ts +62 -0
  30. package/typechain-types/contracts/mocks/utils/mpc/MiscellaneousTestsContract.ts +396 -0
  31. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.ts +221 -0
  32. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract.ts +11 -8
  33. package/typechain-types/contracts/mocks/utils/mpc/TransferScalarTestsContract.ts +15 -15
  34. package/typechain-types/contracts/mocks/utils/mpc/TransferTestsContract.ts +15 -15
  35. package/typechain-types/contracts/mocks/utils/mpc/index.ts +3 -6
  36. package/typechain-types/contracts/onboard/AccountOnboard.ts +9 -4
  37. package/typechain-types/contracts/utils/mpc/MpcCore.ts +84 -0
  38. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +81 -40
  39. package/typechain-types/contracts/utils/mpc/index.ts +1 -0
  40. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  41. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +1 -1
  42. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  43. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/ArithmeticTestsContract__factory.ts +387 -0
  44. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/PrecompilesArythmeticTestsContract__factory.ts +388 -0
  45. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol/index.ts +5 -0
  46. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +20 -7
  47. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +28 -2
  48. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/Comparison1TestsContract__factory.ts +1 -1
  49. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +387 -0
  50. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +28 -2
  51. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +15 -2
  52. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +66 -1
  53. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous2TestsContract__factory.ts +1 -1
  54. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +424 -0
  55. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +289 -0
  56. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract__factory.ts +19 -3
  57. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  58. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  59. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +4 -4
  60. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +4 -4
  61. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +3 -4
  62. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +1 -1
  63. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +8 -2
  64. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +77 -0
  65. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +124 -61
  66. package/typechain-types/factories/contracts/utils/mpc/index.ts +1 -0
  67. package/typechain-types/hardhat.d.ts +26 -26
  68. package/typechain-types/index.ts +8 -8
  69. package/contracts/mocks/utils/mpc/Miscellaneous2TestsContract.sol +0 -448
  70. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol +0 -81
  71. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +0 -311
@@ -615,7 +615,7 @@ const _abi = [
615
615
  ] as const;
616
616
 
617
617
  const _bytecode =
618
- "0x608060405260016005553480156200001657600080fd5b506001806200003667fc9135fc006556cf60c01b620003b960201b60201c565b6200005267e84f4d2e14f4126a60c01b620003b960201b60201c565b816000806101000a81548160ff021916908315150217905550620000876793c1b7e17fb1d67460c01b620003b960201b60201c565b80600060016101000a81548160ff021916908315150217905550620000bd67e893cb10cb14c2e060c01b620003b960201b60201c565b600180604051620000ce9062000d59565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506200010f67e116591c6b1349a860c01b620003b960201b60201c565b6200012b67da8f8c438e11abc160c01b620003b960201b60201c565b620001fe6040518061014001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600581526020017f61646d696e0000000000000000000000000000000000000000000000000000008152508152602001600115158152602001600081526020016000815260200160001515815260200160001515815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250620003bc60201b60201c565b506200021b67b37738395428e5dc60c01b620003b960201b60201c565b6001806040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525060405162000263919062000dde565b908152602001604051809103902060006101000a81548160ff021916908315150217905550620002a467cccad69878c4144960c01b620003b960201b60201c565b620002c06758e5ecd26455bdcf60c01b620003b960201b60201c565b62000394604051806101400160405280600173ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152508152602001600115158152602001600081526020016000815260200160001515815260200160001515815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250620003bc60201b60201c565b505050620003b36799cfec24eb7a4f4b60c01b62000cfb60201b60201c565b620011f7565b50565b6000620003da671ad3261cf3f484d060c01b620003b960201b60201c565b620003f6673ebe9881a5684e7560c01b620003b960201b60201c565b6200041267ff4c8dd9b4603bdd60c01b620003b960201b60201c565b600060046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083602001516040516200046b919062000dde565b90815260200160405180910390205403620007fa576200049c673cf4f2896221a39a60c01b620003b960201b60201c565b620004b86749c6ba72bf8d0e5a60c01b620003b960201b60201c565b60055460046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020836020015160405162000512919062000dde565b90815260200160405180910390208190555062000540672361a2b9f82da51a60c01b620003b960201b60201c565b6040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201908162000667919062001066565b5060608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff02191690831515021790555060c0820151816004015560e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061014082015181600801908162000747919062001066565b5090505062000767672a85196bbf3e424860c01b620003b960201b60201c565b60056000815462000778906200117c565b919050819055506200079b67f2e270b02097630160c01b620003b960201b60201c565b60036000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154620007ed906200117c565b9190508190555062000cba565b62000816672a8d78ebd462da7b60c01b620003b960201b60201c565b62000832675defb162447becbe60c01b620003b960201b60201c565b6200084e67f24467ed722353ea60c01b620003b960201b60201c565b60006006600060046000866000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208560200151604051620008ab919062000dde565b90815260200160405180910390205481526020019081526020016000209050620008e6678f1322a127e0837b60c01b620003b960201b60201c565b6200090267fbd458463f96175460c01b620003b960201b60201c565b826040015180156200092357508060030160009054906101000a900460ff16155b15620009c0576200094567f8e43b8c9925486860c01b620003b960201b60201c565b6200096167c0b725995781021d60c01b620003b960201b60201c565b60036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154620009b3906200117c565b91905081905550620009dd565b620009dc677f1f92ba8d2740ed60c01b620003b960201b60201c565b5b620009f967eb0678d57012906060c01b620003b960201b60201c565b62000a1567b5d31de538d94faf60c01b620003b960201b60201c565b826040015115801562000a3657508060030160009054906101000a900460ff165b1562000ad35762000a5867de85481c93d84f6960c01b620003b960201b60201c565b62000a74672d293a57d3c09d8260c01b620003b960201b60201c565b60036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815462000ac690620011c9565b9190508190555062000af0565b62000aef67bbc6c101c6701aaa60c01b620003b960201b60201c565b5b62000b0c67f0a1dc6f1f4af7aa60c01b620003b960201b60201c565b82604001518160030160006101000a81548160ff02191690831515021790555062000b486764f8b6c583bf3a2c60c01b620003b960201b60201c565b8260600151816004018190555062000b716768ab02d44d558cdf60c01b620003b960201b60201c565b8260800151816005018190555062000b9a67cbbbd6918494425260c01b620003b960201b60201c565b8260a001518160030160016101000a81548160ff02191690831515021790555062000bd667bf0abc0ec9c63c9f60c01b620003b960201b60201c565b8260c001518160030160026101000a81548160ff02191690831515021790555062000c126730a0121a62e84b1b60c01b620003b960201b60201c565b8260e00151816006018190555062000c3b6781e3ef5c7a2e17cc60c01b620003b960201b60201c565b8261010001518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000c9f673649676ee0f52b3060c01b620003b960201b60201c565b82610120015181600801908162000cb7919062001066565b50505b62000cd667dda4f461b2efd31060c01b620003b960201b60201c565b62000cf2675a79615fb8224e6e60c01b620003b960201b60201c565b60019050919050565b50565b600081905092915050565b7f61646d696e000000000000000000000000000000000000000000000000000000600082015250565b600062000d4160058362000cfe565b915062000d4e8262000d09565b600582019050919050565b600062000d668262000d32565b9150819050919050565b600081519050919050565b60005b8381101562000d9b57808201518184015260208101905062000d7e565b60008484015250505050565b600062000db48262000d70565b62000dc0818562000cfe565b935062000dd281856020860162000d7b565b80840191505092915050565b600062000dec828462000da7565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e6e57607f821691505b60208210810362000e845762000e8362000e26565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000eee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000eaf565b62000efa868362000eaf565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f4762000f4162000f3b8462000f12565b62000f1c565b62000f12565b9050919050565b6000819050919050565b62000f638362000f26565b62000f7b62000f728262000f4e565b84845462000ebc565b825550505050565b600090565b62000f9262000f83565b62000f9f81848462000f58565b505050565b5b8181101562000fc75762000fbb60008262000f88565b60018101905062000fa5565b5050565b601f821115620010165762000fe08162000e8a565b62000feb8462000e9f565b8101602085101562000ffb578190505b620010136200100a8562000e9f565b83018262000fa4565b50505b505050565b600082821c905092915050565b60006200103b600019846008026200101b565b1980831691505092915050565b600062001056838362001028565b9150826002028217905092915050565b620010718262000d70565b67ffffffffffffffff8111156200108d576200108c62000df7565b5b62001099825462000e55565b620010a682828562000fcb565b600060209050601f831160018114620010de5760008415620010c9578287015190505b620010d5858262001048565b86555062001145565b601f198416620010ee8662000e8a565b60005b828110156200111857848901518255600182019150602085019450602081019050620010f1565b8683101562001138578489015162001134601f89168262001028565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011898262000f12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620011be57620011bd6200114d565b5b600182019050919050565b6000620011d68262000f12565b915060008203620011ec57620011eb6200114d565b5b600182039050919050565b614d6180620012076000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063a7804d65116100b8578063f28b9f341161007c578063f28b9f341461041b578063f558936414610439578063f9529ee214610469578063fa1b3cac14610499578063fac66f01146104b7578063fb83bb73146104e757610142565b8063a7804d651461033d578063ade0bee41461036d578063c6064b281461039d578063c8d757fd146103cd578063efdcec9c146103fd57610142565b8063661957011161010a5780636619570114610241578063699d7c331461025f57806382dab96e1461028f5780639359c287146102bf578063a5fcf162146102ef578063a74d34391461030d57610142565b806326c500071461014757806334906a4a14610181578063372db089146101b1578063476a95ad146101e157806365c5815214610211575b600080fd5b610161600480360381019061015c9190613985565b610517565b6040516101789b9a99989796959493929190613aad565b60405180910390f35b61019b60048036038101906101969190613c9b565b6106e8565b6040516101a89190613ce4565b60405180910390f35b6101cb60048036038101906101c69190613d8b565b61071e565b6040516101d89190613ce4565b60405180910390f35b6101fb60048036038101906101f69190613e2b565b610786565b6040516102089190613ce4565b60405180910390f35b61022b60048036038101906102269190613c9b565b61089d565b6040516102389190613ce4565b60405180910390f35b6102496109eb565b6040516102569190613e58565b60405180910390f35b61027960048036038101906102749190613e73565b610a3d565b6040516102869190613ce4565b60405180910390f35b6102a960048036038101906102a4919061400b565b610aa4565b6040516102b69190613ce4565b60405180910390f35b6102d960048036038101906102d49190613c9b565b6112cf565b6040516102e69190613ce4565b60405180910390f35b6102f761141c565b6040516103049190613ce4565b60405180910390f35b61032760048036038101906103229190614054565b61142d565b6040516103349190613ce4565b60405180910390f35b610357600480360381019061035291906140e9565b6114cb565b6040516103649190613e58565b60405180910390f35b61038760048036038101906103829190613e2b565b6114e3565b6040516103949190613ce4565b60405180910390f35b6103b760048036038101906103b29190614116565b6115fd565b6040516103c49190613ce4565b60405180910390f35b6103e760048036038101906103e2919061418a565b611665565b6040516103f49190613e58565b60405180910390f35b6104056116a0565b60405161041291906141e6565b60405180910390f35b6104236116d9565b6040516104309190613ce4565b60405180910390f35b610453600480360381019061044e9190613c9b565b6116ec565b6040516104609190613ce4565b60405180910390f35b610483600480360381019061047e9190614208565b611722565b6040516104909190613ce4565b60405180910390f35b6104a1611874565b6040516104ae9190614255565b60405180910390f35b6104d160048036038101906104cc9190614270565b611879565b6040516104de91906144df565b60405180910390f35b61050160048036038101906104fc9190614208565b611ec2565b60405161050e9190613ce4565b60405180910390f35b60066020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600201805461056690614530565b80601f016020809104026020016040519081016040528092919081815260200182805461059290614530565b80156105df5780601f106105b4576101008083540402835291602001916105df565b820191906000526020600020905b8154815290600101906020018083116105c257829003601f168201915b5050505050908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16908060030160029054906101000a900460ff16908060040154908060050154908060060154908060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600801805461066590614530565b80601f016020809104026020016040519081016040528092919081815260200182805461069190614530565b80156106de5780601f106106b3576101008083540402835291602001916106de565b820191906000526020600020905b8154815290600101906020018083116106c157829003601f168201915b505050505090508b565b6001818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b6000610734676f0676d75719709b60c01b612013565b61074867387ad340bf4f15ab60c01b612013565b61075c67660e834b9ffd221560c01b612013565b61077c858585600186600060405180602001604052806000815250612016565b9050949350505050565b600061079c67dde7d0165699a0ec60c01b612013565b6107b067a28ce0bda80e860360c01b612013565b6107c467c77a3735f1bbcc2760c01b612013565b6107d8679231e40573fc61d960c01b612013565b81151560008054906101000a900460ff1615150361082b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610822906145ad565b60405180910390fd5b61083f67e5a9d09fb7b21b1960c01b612013565b61085367e2aca82bd66e6ade60c01b612013565b816000806101000a81548160ff0219169083151502179055506108806766d8699136cf6a2360c01b612013565b6108946759cb355ee9591ed460c01b612013565b60019050919050565b60006108b3679d5b9cafcbd1c7fc60c01b612013565b6108c767bb2abde4efb78d9760c01b612013565b6108db67df6906e4cbb6a7d560c01b612013565b6108ef67ca8c714c7f50980560c01b612013565b6002826040516108ff9190614609565b908152602001604051809103902060009054906101000a900460ff161561095b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095290614692565b60405180910390fd5b61096f6774436442374463d060c01b612013565b6109836732b91dc3cdf1e56060c01b612013565b60016002836040516109959190614609565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506109ce678622ace8a8f51e5260c01b612013565b6109e26713466ac46bc6137e60c01b612013565b60019050919050565b6000610a01673c3830f74a112f9660c01b612013565b610a156781d68b22744b1d4660c01b612013565b610a29675ce099e8cf90529a60c01b612013565b6001600554610a3891906146e1565b905090565b6000610a53674f3e42766e700a7260c01b612013565b610a676719997f1d4d31d36060c01b612013565b610a7b6731f6ceee22b78a6c60c01b612013565b610a9b848484600080600060405180602001604052806000815250612016565b90509392505050565b6000610aba671ad3261cf3f484d060c01b612013565b610ace673ebe9881a5684e7560c01b612013565b610ae267ff4c8dd9b4603bdd60c01b612013565b600060046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360200151604051610b399190614609565b90815260200160405180910390205403610e9457610b61673cf4f2896221a39a60c01b612013565b610b756749c6ba72bf8d0e5a60c01b612013565b60055460046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360200151604051610bcd9190614609565b908152602001604051809103902081905550610bf3672361a2b9f82da51a60c01b612013565b6040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019081610d1891906148c1565b5060608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff02191690831515021790555060c0820151816004015560e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610140820151816008019081610df691906148c1565b50905050610e0e672a85196bbf3e424860c01b612013565b600560008154610e1d90614993565b91905081905550610e3867f2e270b02097630160c01b612013565b60036000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154610e8890614993565b9190508190555061129e565b610ea8672a8d78ebd462da7b60c01b612013565b610ebc675defb162447becbe60c01b612013565b610ed067f24467ed722353ea60c01b612013565b60006006600060046000866000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208560200151604051610f2b9190614609565b90815260200160405180910390205481526020019081526020016000209050610f5e678f1322a127e0837b60c01b612013565b610f7267fbd458463f96175460c01b612013565b82604001518015610f9257508060030160009054906101000a900460ff16155b1561101b57610fab67f8e43b8c9925486860c01b612013565b610fbf67c0b725995781021d60c01b612013565b60036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815461100f90614993565b91905081905550611030565b61102f677f1f92ba8d2740ed60c01b612013565b5b61104467eb0678d57012906060c01b612013565b61105867b5d31de538d94faf60c01b612013565b826040015115801561107857508060030160009054906101000a900460ff165b156111015761109167de85481c93d84f6960c01b612013565b6110a5672d293a57d3c09d8260c01b612013565b60036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546110f5906149db565b91905081905550611116565b61111567bbc6c101c6701aaa60c01b612013565b5b61112a67f0a1dc6f1f4af7aa60c01b612013565b82604001518160030160006101000a81548160ff02191690831515021790555061115e6764f8b6c583bf3a2c60c01b612013565b8260600151816004018190555061117f6768ab02d44d558cdf60c01b612013565b826080015181600501819055506111a067cbbbd6918494425260c01b612013565b8260a001518160030160016101000a81548160ff0219169083151502179055506111d467bf0abc0ec9c63c9f60c01b612013565b8260c001518160030160026101000a81548160ff0219169083151502179055506112086730a0121a62e84b1b60c01b612013565b8260e0015181600601819055506112296781e3ef5c7a2e17cc60c01b612013565b8261010001518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611285673649676ee0f52b3060c01b612013565b82610120015181600801908161129b91906148c1565b50505b6112b267dda4f461b2efd31060c01b612013565b6112c6675a79615fb8224e6e60c01b612013565b60019050919050565b60006112e567fdc7b20a2a6275c460c01b612013565b6112f967c8e440f26e855c1e60c01b612013565b61130d67c7b3165d226d2cf760c01b612013565b611321670d3618aab3ff572860c01b612013565b6001826040516113319190614609565b908152602001604051809103902060009054906101000a900460ff161561138d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138490614a50565b60405180910390fd5b6113a1674c36a1f8724dc15a60c01b612013565b6113b56782914f558011a44360c01b612013565b600180836040516113c69190614609565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506113ff672180b2e681d918e660c01b612013565b61141367fb349e777807b19160c01b612013565b60019050919050565b60008054906101000a900460ff1681565b600061144367151f7706ff912c9f60c01b612013565b611457676c4b537fdeb93df560c01b612013565b61146b679826fa73f672d16360c01b612013565b6114c0868686600360008089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612016565b905095945050505050565b60036020528060005260406000206000915090505481565b60006114f967b5b63f9ea67246ec60c01b612013565b61150d6713f0fcc340383bf460c01b612013565b61152167923f58c897a4f4f860c01b612013565b61153567b9a11296db875f8760c01b612013565b811515600060019054906101000a900460ff1615150361158a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611581906145ad565b60405180910390fd5b61159e677d17335d55af052c60c01b612013565b6115b267180c893074b3d27a60c01b612013565b81600060016101000a81548160ff0219169083151502179055506115e067750bf28010d4e42160c01b612013565b6115f467016379e498dc9ece60c01b612013565b60019050919050565b600061161367eb1a0403cb54ce5e60c01b612013565b611627670fdc961c6f3cd73e60c01b612013565b61163b67bc3aec633524827f60c01b612013565b61165b858585600260008760405180602001604052806000815250612016565b9050949350505050565b600460205281600052604060002081805160208101820180518482526020830160208501208183528095505050505050600091509150505481565b6040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525081565b600060019054906101000a900460ff1681565b6002818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b60006117386735ed968560641d5760c01b612013565b61174c676e5861509169e0ae60c01b612013565b6117606747065bb387f61af560c01b612013565b6117746731410c03b0a4dd2c60c01b612013565b60018383604051611786929190614a95565b908152602001604051809103902060009054906101000a900460ff166117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614afa565b60405180910390fd5b6117f5672a43a4d37980e6d260c01b612013565b61180967d20c049ab571fa6a60c01b612013565b60006001848460405161181d929190614a95565b908152602001604051809103902060006101000a81548160ff02191690831515021790555061185667246bc070308a394f60c01b612013565b61186a6794a6f9ceec90030360c01b612013565b6001905092915050565b600181565b606061188f67728dda4ce09aa9b960c01b612013565b6118a36733ac6aecfe78f02c60c01b612013565b6118b7679962d0389b8253e760c01b612013565b6118cb67ba1f4ad8a225f01d60c01b612013565b6000831161190e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190590614b66565b60405180910390fd5b61192267fe5087653620d89660c01b612013565b61193667cfa5f16459ae453a60c01b612013565b61194a676804ca5d753c2d0860c01b612013565b61195e675b9db541a75aaff960c01b612013565b600082116119a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199890614bd2565b60405180910390fd5b6119b56731067f7f637dcdf560c01b612013565b6119c967ff19018989544e7a60c01b612013565b6119dd67834dc5efafab5fbf60c01b612013565b6005548310611a6a576119fa67d087dd9cb311b5ec60c01b612013565b611a0e67c5f6992e3ecd565360c01b612013565b600067ffffffffffffffff811115611a2957611a28613b70565b5b604051908082528060200260200182016040528015611a6257816020015b611a4f6138af565b815260200190600190039081611a475790505b509050611ebc565b611a7e6761eb1f1b3cf6814f60c01b612013565b611a9267afd3aa2544f0c66060c01b612013565b611aa667333a6cc1281fd79f60c01b612013565b60006001600554611ab791906146e1565b60018486611ac59190614bf2565b611acf91906146e1565b111580611aec5750611aeb67bab9638f50b094ae60c01b61331a565b5b8015611b085750611b07673dfc6964de9053af60c01b613321565b5b611b1f5783600554611b1a91906146e1565b611b21565b825b9050611b3767a4c047fd7510565f60c01b612013565b611b4b67ec07e07d21c8496260c01b612013565b60008167ffffffffffffffff811115611b6757611b66613b70565b5b604051908082528060200260200182016040528015611ba057816020015b611b8d6138af565b815260200190600190039081611b855790505b509050611bb767b776f96f629068fa60c01b612013565b611bcb67d8e248b145720a6260c01b612013565b60005b82811015611e8e57611bea67c2f923a42f00279360c01b612013565b600660008288611bfa9190614bf2565b815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282018054611c8490614530565b80601f0160208091040260200160405190810160405280929190818152602001828054611cb090614530565b8015611cfd5780601f10611cd257610100808354040283529160200191611cfd565b820191906000526020600020905b815481529060010190602001808311611ce057829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054611ddb90614530565b80601f0160208091040260200160405190810160405280929190818152602001828054611e0790614530565b8015611e545780601f10611e2957610100808354040283529160200191611e54565b820191906000526020600020905b815481529060010190602001808311611e3757829003601f168201915b505050505081525050828281518110611e7057611e6f614c26565b5b60200260200101819052508080611e8690614993565b915050611bce565b50611ea266645c4a1d6b9a9d60c01b612013565b611eb667b22cb492e98a03af60c01b612013565b80925050505b92915050565b6000611ed8674184f32ec50ee90b60c01b612013565b611eeb66389b205a3c51f760c01b612013565b611eff67fd99ede3011f804760c01b612013565b611f1367be3755f4be031b7660c01b612013565b60028383604051611f25929190614a95565b908152602001604051809103902060009054906101000a900460ff16611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790614ca1565b60405180910390fd5b611f946762cb7cfb48f742f660c01b612013565b611fa8676dabf4ca315b0e5560c01b612013565b600060028484604051611fbc929190614a95565b908152602001604051809103902060006101000a81548160ff021916908315150217905550611ff567f2708ef2a2c724a660c01b612013565b612009677fd16cd58791706660c01b612013565b6001905092915050565b50565b600061202c67ccd1fdad77811f0c60c01b612013565b61204067e447c9bec58df02860c01b612013565b612054670ca08ed82c6d37ae60c01b612013565b60028787604051612066929190614a95565b908152602001604051809103902060009054906101000a900460ff16156120b85761209b676d9c05eea2608cbb60c01b612013565b6120af679d23e0d7fe42722760c01b612013565b6000905061330f565b6120cc67ad5eebe62aeaab2d60c01b612013565b6120e0679d924797b633357960c01b612013565b6120f467d268959fc628fd3860c01b612013565b60016040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516121399190614609565b908152602001604051809103902060009054906101000a900460ff1615801561218d57506001878760405161216f929190614a95565b908152602001604051809103902060009054906101000a900460ff16155b156121c3576121a6679232f96c90ccccab60c01b612013565b6121ba6718b213616c31a05c60c01b612013565b6000905061330f565b6121d767bdb87b4fc1298cfa60c01b612013565b6121eb67359b68cef449dec660c01b612013565b6121ff67cbde617b237bb12060c01b612013565b60066000600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208989604051612252929190614a95565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff16156125995761229967e052dae64575aadf60c01b612013565b6122ad6708ecc7da60ebceff60c01b612013565b6122c1675e86518f233691fe60c01b612013565b61259260066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208a8a604051612317929190614a95565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546123b090614530565b80601f01602080910402602001604051908101604052809291908181526020018280546123dc90614530565b80156124295780601f106123fe57610100808354040283529160200191612429565b820191906000526020600020905b81548152906001019060200180831161240c57829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160088201805461250790614530565b80601f016020809104026020016040519081016040528092919081815260200182805461253390614530565b80156125805780601f1061255557610100808354040283529160200191612580565b820191906000526020600020905b81548152906001019060200180831161256357829003601f168201915b5050505050815250508686868661332c565b905061330f565b6125ad67bd63b480229476c460c01b612013565b6125c167f40cd69e32934a7660c01b612013565b6125d5676f4257448761faa760c01b612013565b60066000600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525060405161265b9190614609565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff16156129d5576126a267bf360113ce4d471760c01b612013565b6126b667a9a0490dfae3f25960c01b612013565b6126ca67b8a70792af9cce9f60c01b612013565b6129ce60066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516127539190614609565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546127ec90614530565b80601f016020809104026020016040519081016040528092919081815260200182805461281890614530565b80156128655780601f1061283a57610100808354040283529160200191612865565b820191906000526020600020905b81548152906001019060200180831161284857829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160088201805461294390614530565b80601f016020809104026020016040519081016040528092919081815260200182805461296f90614530565b80156129bc5780601f10612991576101008083540402835291602001916129bc565b820191906000526020600020905b81548152906001019060200180831161299f57829003601f168201915b5050505050815250508686868661332c565b905061330f565b6129e967dc48553233606cbb60c01b612013565b6129fd677dab8698e52a4b3260c01b612013565b612a11670924859688dd404560c01b612013565b6000600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612aac57612a6d674447780f6dd77b6760c01b612013565b612a8167ac587d67ec08f57660c01b612013565b612a956711f14cadef1b5cf560c01b612013565b600060019054906101000a900460ff16905061330f565b612ac0679f7acd888881b97d60c01b612013565b612ad4678ccb89341815f68160c01b612013565b612ae8674acce9791a2cade860c01b612013565b6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208989604051612b3c929190614a95565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff1615612e8457612b8367e84e3b4eb587698c60c01b612013565b612b97676dac846bae2f33eb60c01b612013565b612bab67f5595b744e12d22160c01b612013565b612e7d6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208a8a604051612c02929190614a95565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282018054612c9b90614530565b80601f0160208091040260200160405190810160405280929190818152602001828054612cc790614530565b8015612d145780601f10612ce957610100808354040283529160200191612d14565b820191906000526020600020905b815481529060010190602001808311612cf757829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054612df290614530565b80601f0160208091040260200160405190810160405280929190818152602001828054612e1e90614530565b8015612e6b5780601f10612e4057610100808354040283529160200191612e6b565b820191906000526020600020905b815481529060010190602001808311612e4e57829003601f168201915b5050505050815250508686868661332c565b905061330f565b612e986763bf2991c34c771360c01b612013565b612eac6740e7d43c1a6d54e060c01b612013565b612ec067ab9a3537808d6b5e60c01b612013565b6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a00000000000000000000000000000000000000000000000000000000000000815250604051612f479190614609565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff16156132c257612f8e676f0f596fa7f0510160c01b612013565b612fa2675537a48566b7b39160c01b612013565b612fb667d95d850db071176b60c01b612013565b6132bb6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516130409190614609565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546130d990614530565b80601f016020809104026020016040519081016040528092919081815260200182805461310590614530565b80156131525780601f1061312757610100808354040283529160200191613152565b820191906000526020600020905b81548152906001019060200180831161313557829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160088201805461323090614530565b80601f016020809104026020016040519081016040528092919081815260200182805461325c90614530565b80156132a95780601f1061327e576101008083540402835291602001916132a9565b820191906000526020600020905b81548152906001019060200180831161328c57829003601f168201915b5050505050815250508686868661332c565b905061330f565b6132d6672d2f036f0f3c8a9560c01b612013565b6132ea678a545fd45818f0eb60c01b612013565b6132fe67840e86c49a81f17060c01b612013565b60008054906101000a900460ff1690505b979650505050505050565b6000919050565b600060019050919050565b600061334267e21564a3148d463860c01b612013565b61335667d98408469270163060c01b612013565b61336a674bea1e80c8aa319f60c01b612013565b8560800151156133a55761338867ad5c3b1f2299f5f860c01b612013565b61339c6743dd7e53e67df63c60c01b612013565b600090506138a6565b6133b96776b169b3281c12cc60c01b612013565b6133cd67ebac4790087b5a0a60c01b612013565b6133e1678f31959ac2b875df60c01b612013565b8560a001511561341c576133ff6772fbbaf7e115259560c01b612013565b61341367c3a2c150bf15e8f460c01b612013565b600190506138a6565b6134306722e0dac5eb68a2ff60c01b612013565b61344467fb98c9a0e7e5d55560c01b612013565b61345867f4987549f63ca11260c01b612013565b60008660c0015111801561346f5750428660c00151105b156134a5576134886712c0740aa6ccf14e60c01b612013565b61349c67bbc7df08bdd1150460c01b612013565b600090506138a6565b6134b9672fd1101e0511ca8760c01b612013565b6134cd6760725214f0e763e760c01b612013565b6134e1678e6891c32c6f068e60c01b612013565b60008660e001511180156134f85750428660e00151115b1561352e57613511672bd9e576079ebe2360c01b612013565b613525670a66956cb43747c960c01b612013565b600090506138a6565b61354267322171b3ea0bfb6760c01b612013565b61355667f14954a57826591960c01b612013565b61356a6726a7de73a4c8f53460c01b612013565b6001600381111561357e5761357d614cc1565b5b85600381111561359157613590614cc1565b5b1480156135a45750600086610100015114155b80156135b557508386610100015114155b156135ff576135ce679a3c2fb77646cc9760c01b612013565b6135e26794b86d42d6a7965d60c01b612013565b6135f66774a546d1aab4283660c01b612013565b600090506138a6565b61361367bd64266a7e8395e760c01b612013565b61362767cca41d7fe6e9634960c01b612013565b6002600381111561363b5761363a614cc1565b5b85600381111561364e5761364d614cc1565b5b14801561368d5750600073ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b80156136ca57508273ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b15613714576136e367c41cd4235d5e3d1560c01b612013565b6136f7674908d6de07e9de3960c01b612013565b61370b675f0cfc1859a7813e60c01b612013565b600090506138a6565b61372867b1dc60e3844f3eb960c01b612013565b61373c67327b949773d4145e60c01b612013565b60038081111561374f5761374e614cc1565b5b85600381111561376257613761614cc1565b5b1480156137be575060405160200161377990614d16565b604051602081830303815290604052805190602001208661014001516040516020016137a59190614609565b6040516020818303038152906040528051906020012014155b801561381b5750816040516020016137d69190614609565b604051602081830303815290604052805190602001208661014001516040516020016138029190614609565b6040516020818303038152906040528051906020012014155b15613865576138346733cc80604b469e7c60c01b612013565b613848676a5cdb5bad7c0cad60c01b612013565b61385c676d11131380e432da60c01b612013565b600090506138a6565b613879672178adb91b83f80560c01b612013565b61388d676f0f0f61a3db397e60c01b612013565b6138a167e532642009485f0c60c01b612013565b600190505b95945050505050565b60405180610160016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600015158152602001600015158152602001600015158152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6139628161394f565b811461396d57600080fd5b50565b60008135905061397f81613959565b92915050565b60006020828403121561399b5761399a613945565b5b60006139a984828501613970565b91505092915050565b6139bb8161394f565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139ec826139c1565b9050919050565b6139fc816139e1565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a3c578082015181840152602081019050613a21565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a6482613a02565b613a6e8185613a0d565b9350613a7e818560208601613a1e565b613a8781613a48565b840191505092915050565b60008115159050919050565b613aa781613a92565b82525050565b600061016082019050613ac3600083018e6139b2565b613ad0602083018d6139f3565b8181036040830152613ae2818c613a59565b9050613af1606083018b613a9e565b613afe608083018a613a9e565b613b0b60a0830189613a9e565b613b1860c08301886139b2565b613b2560e08301876139b2565b613b336101008301866139b2565b613b416101208301856139f3565b818103610140830152613b548184613a59565b90509c9b505050505050505050505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ba882613a48565b810181811067ffffffffffffffff82111715613bc757613bc6613b70565b5b80604052505050565b6000613bda61393b565b9050613be68282613b9f565b919050565b600067ffffffffffffffff821115613c0657613c05613b70565b5b613c0f82613a48565b9050602081019050919050565b82818337600083830152505050565b6000613c3e613c3984613beb565b613bd0565b905082815260208101848484011115613c5a57613c59613b6b565b5b613c65848285613c1c565b509392505050565b600082601f830112613c8257613c81613b66565b5b8135613c92848260208601613c2b565b91505092915050565b600060208284031215613cb157613cb0613945565b5b600082013567ffffffffffffffff811115613ccf57613cce61394a565b5b613cdb84828501613c6d565b91505092915050565b6000602082019050613cf96000830184613a9e565b92915050565b613d08816139e1565b8114613d1357600080fd5b50565b600081359050613d2581613cff565b92915050565b600080fd5b600080fd5b60008083601f840112613d4b57613d4a613b66565b5b8235905067ffffffffffffffff811115613d6857613d67613d2b565b5b602083019150836001820283011115613d8457613d83613d30565b5b9250929050565b60008060008060608587031215613da557613da4613945565b5b6000613db387828801613d16565b945050602085013567ffffffffffffffff811115613dd457613dd361394a565b5b613de087828801613d35565b93509350506040613df387828801613970565b91505092959194509250565b613e0881613a92565b8114613e1357600080fd5b50565b600081359050613e2581613dff565b92915050565b600060208284031215613e4157613e40613945565b5b6000613e4f84828501613e16565b91505092915050565b6000602082019050613e6d60008301846139b2565b92915050565b600080600060408486031215613e8c57613e8b613945565b5b6000613e9a86828701613d16565b935050602084013567ffffffffffffffff811115613ebb57613eba61394a565b5b613ec786828701613d35565b92509250509250925092565b600080fd5b600080fd5b60006101408284031215613ef457613ef3613ed3565b5b613eff610140613bd0565b90506000613f0f84828501613d16565b600083015250602082013567ffffffffffffffff811115613f3357613f32613ed8565b5b613f3f84828501613c6d565b6020830152506040613f5384828501613e16565b6040830152506060613f6784828501613970565b6060830152506080613f7b84828501613970565b60808301525060a0613f8f84828501613e16565b60a08301525060c0613fa384828501613e16565b60c08301525060e0613fb784828501613970565b60e083015250610100613fcc84828501613d16565b6101008301525061012082013567ffffffffffffffff811115613ff257613ff1613ed8565b5b613ffe84828501613c6d565b6101208301525092915050565b60006020828403121561402157614020613945565b5b600082013567ffffffffffffffff81111561403f5761403e61394a565b5b61404b84828501613edd565b91505092915050565b6000806000806000606086880312156140705761406f613945565b5b600061407e88828901613d16565b955050602086013567ffffffffffffffff81111561409f5761409e61394a565b5b6140ab88828901613d35565b9450945050604086013567ffffffffffffffff8111156140ce576140cd61394a565b5b6140da88828901613d35565b92509250509295509295909350565b6000602082840312156140ff576140fe613945565b5b600061410d84828501613d16565b91505092915050565b600080600080606085870312156141305761412f613945565b5b600061413e87828801613d16565b945050602085013567ffffffffffffffff81111561415f5761415e61394a565b5b61416b87828801613d35565b9350935050604061417e87828801613d16565b91505092959194509250565b600080604083850312156141a1576141a0613945565b5b60006141af85828601613d16565b925050602083013567ffffffffffffffff8111156141d0576141cf61394a565b5b6141dc85828601613c6d565b9150509250929050565b600060208201905081810360008301526142008184613a59565b905092915050565b6000806020838503121561421f5761421e613945565b5b600083013567ffffffffffffffff81111561423d5761423c61394a565b5b61424985828601613d35565b92509250509250929050565b600060208201905061426a60008301846139f3565b92915050565b6000806040838503121561428757614286613945565b5b600061429585828601613970565b92505060206142a685828601613970565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142e58161394f565b82525050565b6142f4816139e1565b82525050565b600082825260208201905092915050565b600061431682613a02565b61432081856142fa565b9350614330818560208601613a1e565b61433981613a48565b840191505092915050565b61434d81613a92565b82525050565b60006101608301600083015161436c60008601826142dc565b50602083015161437f60208601826142eb565b5060408301518482036040860152614397828261430b565b91505060608301516143ac6060860182614344565b5060808301516143bf6080860182614344565b5060a08301516143d260a0860182614344565b5060c08301516143e560c08601826142dc565b5060e08301516143f860e08601826142dc565b5061010083015161440d6101008601826142dc565b506101208301516144226101208601826142eb565b5061014083015184820361014086015261443c828261430b565b9150508091505092915050565b60006144558383614353565b905092915050565b6000602082019050919050565b6000614475826142b0565b61447f81856142bb565b935083602082028501614491856142cc565b8060005b858110156144cd57848403895281516144ae8582614449565b94506144b98361445d565b925060208a01995050600181019050614495565b50829750879550505050505092915050565b600060208201905081810360008301526144f9818461446a565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061454857607f821691505b60208210810361455b5761455a614501565b5b50919050565b7f4450463a20494e56414c49445f5045524d495353494f4e5f4348414e47450000600082015250565b6000614597601e83613a0d565b91506145a282614561565b602082019050919050565b600060208201905081810360008301526145c68161458a565b9050919050565b600081905092915050565b60006145e382613a02565b6145ed81856145cd565b93506145fd818560208601613a1e565b80840191505092915050565b600061461582846145d8565b915081905092915050565b7f4450463a204f5045524154494f4e5f414c52454144595f52455354524943544560008201527f4400000000000000000000000000000000000000000000000000000000000000602082015250565b600061467c602183613a0d565b915061468782614620565b604082019050919050565b600060208201905081810360008301526146ab8161466f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146ec8261394f565b91506146f78361394f565b925082820390508181111561470f5761470e6146b2565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026147777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261473a565b614781868361473a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006147be6147b96147b48461394f565b614799565b61394f565b9050919050565b6000819050919050565b6147d8836147a3565b6147ec6147e4826147c5565b848454614747565b825550505050565b600090565b6148016147f4565b61480c8184846147cf565b505050565b5b81811015614830576148256000826147f9565b600181019050614812565b5050565b601f8211156148755761484681614715565b61484f8461472a565b8101602085101561485e578190505b61487261486a8561472a565b830182614811565b50505b505050565b600082821c905092915050565b60006148986000198460080261487a565b1980831691505092915050565b60006148b18383614887565b9150826002028217905092915050565b6148ca82613a02565b67ffffffffffffffff8111156148e3576148e2613b70565b5b6148ed8254614530565b6148f8828285614834565b600060209050601f83116001811461492b5760008415614919578287015190505b61492385826148a5565b86555061498b565b601f19841661493986614715565b60005b828110156149615784890151825560018201915060208501945060208101905061493c565b8683101561497e578489015161497a601f891682614887565b8355505b6001600288020188555050505b505050505050565b600061499e8261394f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149d0576149cf6146b2565b5b600182019050919050565b60006149e68261394f565b9150600082036149f9576149f86146b2565b5b600182039050919050565b7f4450463a204f5045524154494f4e5f414c52454144595f414c4c4f5745440000600082015250565b6000614a3a601e83613a0d565b9150614a4582614a04565b602082019050919050565b60006020820190508181036000830152614a6981614a2d565b9050919050565b6000614a7c83856145cd565b9350614a89838584613c1c565b82840190509392505050565b6000614aa2828486614a70565b91508190509392505050565b7f4450463a204f5045524154494f4e5f4e4f545f414c4c4f574544000000000000600082015250565b6000614ae4601a83613a0d565b9150614aef82614aae565b602082019050919050565b60006020820190508181036000830152614b1381614ad7565b9050919050565b7f4450463a2053544152545f4944585f5a45524f00000000000000000000000000600082015250565b6000614b50601383613a0d565b9150614b5b82614b1a565b602082019050919050565b60006020820190508181036000830152614b7f81614b43565b9050919050565b7f4450463a204348554e4b5f53495a455f5a45524f000000000000000000000000600082015250565b6000614bbc601483613a0d565b9150614bc782614b86565b602082019050919050565b60006020820190508181036000830152614beb81614baf565b9050919050565b6000614bfd8261394f565b9150614c088361394f565b9250828201905080821115614c2057614c1f6146b2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4450463a204f5045524154494f4e5f4e4f545f52455354524943544544000000600082015250565b6000614c8b601d83613a0d565b9150614c9682614c55565b602082019050919050565b60006020820190508181036000830152614cba81614c7e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b50565b6000614d006000836145cd565b9150614d0b82614cf0565b600082019050919050565b6000614d2182614cf3565b915081905091905056fea2646970667358221220c79f099f7410c563ad454a5ae04bf33640e074552eb7cc441f0f263793e22f1d64736f6c63430008140033";
618
+ "0x608060405260016005553480156200001657600080fd5b50600180816000806101000a81548160ff02191690831515021790555080600060016101000a81548160ff0219169083151502179055506001806040516200005e90620008ca565b908152602001604051809103902060006101000a81548160ff021916908315150217905550620001566040518061014001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600581526020017f61646d696e0000000000000000000000000000000000000000000000000000008152508152602001600115158152602001600081526020016000815260200160001515815260200160001515815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250620002a160201b60201c565b506001806040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516200019f91906200094f565b908152602001604051809103902060006101000a81548160ff02191690831515021790555062000298604051806101400160405280600173ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152508152602001600115158152602001600081526020016000815260200160001515815260200160001515815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250620002a160201b60201c565b50505062000d68565b60008060046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360200151604051620002fb91906200094f565b90815260200160405180910390205403620005fe5760055460046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083602001516040516200036a91906200094f565b9081526020016040518091039020819055506040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019081620004a3919062000bd7565b5060608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff02191690831515021790555060c0820151816004015560e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061014082015181600801908162000583919062000bd7565b50905050600560008154620005989062000ced565b9190508190555060036000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154620005f19062000ced565b9190508190555062000866565b60006006600060046000866000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085602001516040516200065b91906200094f565b90815260200160405180910390205481526020019081526020016000209050826040015180156200069b57508060030160009054906101000a900460ff16155b15620006fb5760036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154620006f39062000ced565b919050819055505b82604001511580156200071c57508060030160009054906101000a900460ff165b156200077c5760036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154620007749062000d3a565b919050819055505b82604001518160030160006101000a81548160ff02191690831515021790555082606001518160040181905550826080015181600501819055508260a001518160030160016101000a81548160ff0219169083151502179055508260c001518160030160026101000a81548160ff0219169083151502179055508260e0015181600601819055508261010001518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082610120015181600801908162000863919062000bd7565b50505b60019050919050565b600081905092915050565b7f61646d696e000000000000000000000000000000000000000000000000000000600082015250565b6000620008b26005836200086f565b9150620008bf826200087a565b600582019050919050565b6000620008d782620008a3565b9150819050919050565b600081519050919050565b60005b838110156200090c578082015181840152602081019050620008ef565b60008484015250505050565b60006200092582620008e1565b6200093181856200086f565b935062000943818560208601620008ec565b80840191505092915050565b60006200095d828462000918565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009df57607f821691505b602082108103620009f557620009f462000997565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a20565b62000a6b868362000a20565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ab862000ab262000aac8462000a83565b62000a8d565b62000a83565b9050919050565b6000819050919050565b62000ad48362000a97565b62000aec62000ae38262000abf565b84845462000a2d565b825550505050565b600090565b62000b0362000af4565b62000b1081848462000ac9565b505050565b5b8181101562000b385762000b2c60008262000af9565b60018101905062000b16565b5050565b601f82111562000b875762000b5181620009fb565b62000b5c8462000a10565b8101602085101562000b6c578190505b62000b8462000b7b8562000a10565b83018262000b15565b50505b505050565b600082821c905092915050565b600062000bac6000198460080262000b8c565b1980831691505092915050565b600062000bc7838362000b99565b9150826002028217905092915050565b62000be282620008e1565b67ffffffffffffffff81111562000bfe5762000bfd62000968565b5b62000c0a8254620009c6565b62000c1782828562000b3c565b600060209050601f83116001811462000c4f576000841562000c3a578287015190505b62000c46858262000bb9565b86555062000cb6565b601f19841662000c5f86620009fb565b60005b8281101562000c895784890151825560018201915060208501945060208101905062000c62565b8683101562000ca9578489015162000ca5601f89168262000b99565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cfa8262000a83565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000d2f5762000d2e62000cbe565b5b600182019050919050565b600062000d478262000a83565b91506000820362000d5d5762000d5c62000cbe565b5b600182039050919050565b613d808062000d786000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063a7804d65116100b8578063f28b9f341161007c578063f28b9f341461041b578063f558936414610439578063f9529ee214610469578063fa1b3cac14610499578063fac66f01146104b7578063fb83bb73146104e757610142565b8063a7804d651461033d578063ade0bee41461036d578063c6064b281461039d578063c8d757fd146103cd578063efdcec9c146103fd57610142565b8063661957011161010a5780636619570114610241578063699d7c331461025f57806382dab96e1461028f5780639359c287146102bf578063a5fcf162146102ef578063a74d34391461030d57610142565b806326c500071461014757806334906a4a14610181578063372db089146101b1578063476a95ad146101e157806365c5815214610211575b600080fd5b610161600480360381019061015c91906129a4565b610517565b6040516101789b9a99989796959493929190612acc565b60405180910390f35b61019b60048036038101906101969190612cba565b6106e8565b6040516101a89190612d03565b60405180910390f35b6101cb60048036038101906101c69190612daa565b61071e565b6040516101d89190612d03565b60405180910390f35b6101fb60048036038101906101f69190612e4a565b61074a565b6040516102089190612d03565b60405180910390f35b61022b60048036038101906102269190612cba565b6107c1565b6040516102389190612d03565b60405180910390f35b61024961086f565b6040516102569190612e77565b60405180910390f35b61027960048036038101906102749190612e92565b610885565b6040516102869190612d03565b60405180910390f35b6102a960048036038101906102a4919061302a565b6108b0565b6040516102b69190612d03565b60405180910390f35b6102d960048036038101906102d49190612cba565b610e64565b6040516102e69190612d03565b60405180910390f35b6102f7610f11565b6040516103049190612d03565b60405180910390f35b61032760048036038101906103229190613073565b610f22565b6040516103349190612d03565b60405180910390f35b61035760048036038101906103529190613108565b610f84565b6040516103649190612e77565b60405180910390f35b61038760048036038101906103829190612e4a565b610f9c565b6040516103949190612d03565b60405180910390f35b6103b760048036038101906103b29190613135565b611016565b6040516103c49190612d03565b60405180910390f35b6103e760048036038101906103e291906131a9565b611042565b6040516103f49190612e77565b60405180910390f35b61040561107d565b6040516104129190613205565b60405180910390f35b6104236110b6565b6040516104309190612d03565b60405180910390f35b610453600480360381019061044e9190612cba565b6110c9565b6040516104609190612d03565b60405180910390f35b610483600480360381019061047e9190613227565b6110ff565b6040516104909190612d03565b60405180910390f35b6104a16111b1565b6040516104ae9190613274565b60405180910390f35b6104d160048036038101906104cc919061328f565b6111b6565b6040516104de91906134fe565b60405180910390f35b61050160048036038101906104fc9190613227565b6115fd565b60405161050e9190612d03565b60405180910390f35b60066020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020180546105669061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546105929061354f565b80156105df5780601f106105b4576101008083540402835291602001916105df565b820191906000526020600020905b8154815290600101906020018083116105c257829003601f168201915b5050505050908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16908060030160029054906101000a900460ff16908060040154908060050154908060060154908060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060080180546106659061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546106919061354f565b80156106de5780601f106106b3576101008083540402835291602001916106de565b820191906000526020600020905b8154815290600101906020018083116106c157829003601f168201915b505050505090508b565b6001818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b60006107408585856001866000604051806020016040528060008152506116af565b9050949350505050565b600081151560008054906101000a900460ff1615150361079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610796906135cc565b60405180910390fd5b816000806101000a81548160ff02191690831515021790555060019050919050565b60006002826040516107d39190613628565b908152602001604051809103902060009054906101000a900460ff161561082f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610826906136b1565b60405180910390fd5b60016002836040516108419190613628565b908152602001604051809103902060006101000a81548160ff02191690831515021790555060019050919050565b600060016005546108809190613700565b905090565b60006108a78484846000806000604051806020016040528060008152506116af565b90509392505050565b60008060046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083602001516040516109089190613628565b90815260200160405180910390205403610bff5760055460046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083602001516040516109749190613628565b9081526020016040518091039020819055506040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019081610aab91906138e0565b5060608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff02191690831515021790555060c0820151816004015560e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610140820151816008019081610b8991906138e0565b50905050600560008154610b9c906139b2565b9190508190555060036000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154610bf3906139b2565b91905081905550610e5b565b60006006600060046000866000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208560200151604051610c5a9190613628565b9081526020016040518091039020548152602001908152602001600020905082604001518015610c9957508060030160009054906101000a900460ff16155b15610cf65760036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154610cee906139b2565b919050819055505b8260400151158015610d1657508060030160009054906101000a900460ff165b15610d735760036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154610d6b906139fa565b919050819055505b82604001518160030160006101000a81548160ff02191690831515021790555082606001518160040181905550826080015181600501819055508260a001518160030160016101000a81548160ff0219169083151502179055508260c001518160030160026101000a81548160ff0219169083151502179055508260e0015181600601819055508261010001518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826101200151816008019081610e5891906138e0565b50505b60019050919050565b6000600182604051610e769190613628565b908152602001604051809103902060009054906101000a900460ff1615610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613a6f565b60405180910390fd5b60018083604051610ee39190613628565b908152602001604051809103902060006101000a81548160ff02191690831515021790555060019050919050565b60008054906101000a900460ff1681565b6000610f79868686600360008089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116af565b905095945050505050565b60036020528060005260406000206000915090505481565b6000811515600060019054906101000a900460ff16151503610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea906135cc565b60405180910390fd5b81600060016101000a81548160ff02191690831515021790555060019050919050565b60006110388585856002600087604051806020016040528060008152506116af565b9050949350505050565b600460205281600052604060002081805160208101820180518482526020830160208501208183528095505050505050600091509150505481565b6040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525081565b600060019054906101000a900460ff1681565b6002818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b600060018383604051611113929190613ab4565b908152602001604051809103902060009054906101000a900460ff1661116e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116590613b19565b60405180910390fd5b600060018484604051611182929190613ab4565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506001905092915050565b600181565b6060600083116111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290613b85565b60405180910390fd5b6000821161123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613bf1565b60405180910390fd5b60055483106112a357600067ffffffffffffffff81111561126257611261612b8f565b5b60405190808252806020026020018201604052801561129b57816020015b6112886128ce565b8152602001906001900390816112805790505b5090506115f7565b600060016005546112b49190613700565b600184866112c29190613c11565b6112cc9190613700565b11156112e557836005546112e09190613700565b6112e7565b825b905060008167ffffffffffffffff81111561130557611304612b8f565b5b60405190808252806020026020018201604052801561133e57816020015b61132b6128ce565b8152602001906001900390816113235790505b50905060005b828110156115f05760066000828861135c9190613c11565b815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546113e69061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546114129061354f565b801561145f5780601f106114345761010080835404028352916020019161145f565b820191906000526020600020905b81548152906001019060200180831161144257829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160088201805461153d9061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546115699061354f565b80156115b65780601f1061158b576101008083540402835291602001916115b6565b820191906000526020600020905b81548152906001019060200180831161159957829003601f168201915b5050505050815250508282815181106115d2576115d1613c45565b5b602002602001018190525080806115e8906139b2565b915050611344565b5080925050505b92915050565b600060028383604051611611929190613ab4565b908152602001604051809103902060009054906101000a900460ff1661166c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166390613cc0565b60405180910390fd5b600060028484604051611680929190613ab4565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506001905092915050565b6000600287876040516116c3929190613ab4565b908152602001604051809103902060009054906101000a900460ff16156116ed576000905061264c565b60016040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516117329190613628565b908152602001604051809103902060009054906101000a900460ff16158015611786575060018787604051611768929190613ab4565b908152602001604051809103902060009054906101000a900460ff16155b15611794576000905061264c565b60066000600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002089896040516117e7929190613ab4565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff1615611af257611aeb60066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208a8a604051611870929190613ab4565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546119099061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546119359061354f565b80156119825780601f1061195757610100808354040283529160200191611982565b820191906000526020600020905b81548152906001019060200180831161196557829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054611a609061354f565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8c9061354f565b8015611ad95780601f10611aae57610100808354040283529160200191611ad9565b820191906000526020600020905b815481529060010190602001808311611abc57829003601f168201915b50505050508152505086868686612657565b905061264c565b60066000600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a00000000000000000000000000000000000000000000000000000000000000815250604051611b789190613628565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff1615611eb657611eaf60066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a00000000000000000000000000000000000000000000000000000000000000815250604051611c349190613628565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282018054611ccd9061354f565b80601f0160208091040260200160405190810160405280929190818152602001828054611cf99061354f565b8015611d465780601f10611d1b57610100808354040283529160200191611d46565b820191906000526020600020905b815481529060010190602001808311611d2957829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054611e249061354f565b80601f0160208091040260200160405190810160405280929190818152602001828054611e509061354f565b8015611e9d5780601f10611e7257610100808354040283529160200191611e9d565b820191906000526020600020905b815481529060010190602001808311611e8057829003601f168201915b50505050508152505086868686612657565b905061264c565b6000600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f1557600060019054906101000a900460ff16905061264c565b6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208989604051611f69929190613ab4565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff16156122755761226e6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208a8a604051611ff3929190613ab4565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805461208c9061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546120b89061354f565b80156121055780601f106120da57610100808354040283529160200191612105565b820191906000526020600020905b8154815290600101906020018083116120e857829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016008820180546121e39061354f565b80601f016020809104026020016040519081016040528092919081815260200182805461220f9061354f565b801561225c5780601f106122315761010080835404028352916020019161225c565b820191906000526020600020905b81548152906001019060200180831161223f57829003601f168201915b50505050508152505086868686612657565b905061264c565b6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516122fc9190613628565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff161561263b576126346006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516123b99190613628565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546124529061354f565b80601f016020809104026020016040519081016040528092919081815260200182805461247e9061354f565b80156124cb5780601f106124a0576101008083540402835291602001916124cb565b820191906000526020600020905b8154815290600101906020018083116124ae57829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016008820180546125a99061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546125d59061354f565b80156126225780601f106125f757610100808354040283529160200191612622565b820191906000526020600020905b81548152906001019060200180831161260557829003601f168201915b50505050508152505086868686612657565b905061264c565b60008054906101000a900460ff1690505b979650505050505050565b600085608001511561266c57600090506128c5565b8560a001511561267f57600190506128c5565b60008660c001511180156126965750428660c00151105b156126a457600090506128c5565b60008660e001511180156126bb5750428660e00151115b156126c957600090506128c5565b600160038111156126dd576126dc613ce0565b5b8560038111156126f0576126ef613ce0565b5b1480156127035750600086610100015114155b801561271457508386610100015114155b1561272257600090506128c5565b6002600381111561273657612735613ce0565b5b85600381111561274957612748613ce0565b5b1480156127885750600073ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b80156127c557508273ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b156127d357600090506128c5565b6003808111156127e6576127e5613ce0565b5b8560038111156127f9576127f8613ce0565b5b148015612855575060405160200161281090613d35565b6040516020818303038152906040528051906020012086610140015160405160200161283c9190613628565b6040516020818303038152906040528051906020012014155b80156128b257508160405160200161286d9190613628565b604051602081830303815290604052805190602001208661014001516040516020016128999190613628565b6040516020818303038152906040528051906020012014155b156128c057600090506128c5565b600190505b95945050505050565b60405180610160016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600015158152602001600015158152602001600015158152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6129818161296e565b811461298c57600080fd5b50565b60008135905061299e81612978565b92915050565b6000602082840312156129ba576129b9612964565b5b60006129c88482850161298f565b91505092915050565b6129da8161296e565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a0b826129e0565b9050919050565b612a1b81612a00565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a5b578082015181840152602081019050612a40565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a8382612a21565b612a8d8185612a2c565b9350612a9d818560208601612a3d565b612aa681612a67565b840191505092915050565b60008115159050919050565b612ac681612ab1565b82525050565b600061016082019050612ae2600083018e6129d1565b612aef602083018d612a12565b8181036040830152612b01818c612a78565b9050612b10606083018b612abd565b612b1d608083018a612abd565b612b2a60a0830189612abd565b612b3760c08301886129d1565b612b4460e08301876129d1565b612b526101008301866129d1565b612b60610120830185612a12565b818103610140830152612b738184612a78565b90509c9b505050505050505050505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bc782612a67565b810181811067ffffffffffffffff82111715612be657612be5612b8f565b5b80604052505050565b6000612bf961295a565b9050612c058282612bbe565b919050565b600067ffffffffffffffff821115612c2557612c24612b8f565b5b612c2e82612a67565b9050602081019050919050565b82818337600083830152505050565b6000612c5d612c5884612c0a565b612bef565b905082815260208101848484011115612c7957612c78612b8a565b5b612c84848285612c3b565b509392505050565b600082601f830112612ca157612ca0612b85565b5b8135612cb1848260208601612c4a565b91505092915050565b600060208284031215612cd057612ccf612964565b5b600082013567ffffffffffffffff811115612cee57612ced612969565b5b612cfa84828501612c8c565b91505092915050565b6000602082019050612d186000830184612abd565b92915050565b612d2781612a00565b8114612d3257600080fd5b50565b600081359050612d4481612d1e565b92915050565b600080fd5b600080fd5b60008083601f840112612d6a57612d69612b85565b5b8235905067ffffffffffffffff811115612d8757612d86612d4a565b5b602083019150836001820283011115612da357612da2612d4f565b5b9250929050565b60008060008060608587031215612dc457612dc3612964565b5b6000612dd287828801612d35565b945050602085013567ffffffffffffffff811115612df357612df2612969565b5b612dff87828801612d54565b93509350506040612e128782880161298f565b91505092959194509250565b612e2781612ab1565b8114612e3257600080fd5b50565b600081359050612e4481612e1e565b92915050565b600060208284031215612e6057612e5f612964565b5b6000612e6e84828501612e35565b91505092915050565b6000602082019050612e8c60008301846129d1565b92915050565b600080600060408486031215612eab57612eaa612964565b5b6000612eb986828701612d35565b935050602084013567ffffffffffffffff811115612eda57612ed9612969565b5b612ee686828701612d54565b92509250509250925092565b600080fd5b600080fd5b60006101408284031215612f1357612f12612ef2565b5b612f1e610140612bef565b90506000612f2e84828501612d35565b600083015250602082013567ffffffffffffffff811115612f5257612f51612ef7565b5b612f5e84828501612c8c565b6020830152506040612f7284828501612e35565b6040830152506060612f868482850161298f565b6060830152506080612f9a8482850161298f565b60808301525060a0612fae84828501612e35565b60a08301525060c0612fc284828501612e35565b60c08301525060e0612fd68482850161298f565b60e083015250610100612feb84828501612d35565b6101008301525061012082013567ffffffffffffffff81111561301157613010612ef7565b5b61301d84828501612c8c565b6101208301525092915050565b6000602082840312156130405761303f612964565b5b600082013567ffffffffffffffff81111561305e5761305d612969565b5b61306a84828501612efc565b91505092915050565b60008060008060006060868803121561308f5761308e612964565b5b600061309d88828901612d35565b955050602086013567ffffffffffffffff8111156130be576130bd612969565b5b6130ca88828901612d54565b9450945050604086013567ffffffffffffffff8111156130ed576130ec612969565b5b6130f988828901612d54565b92509250509295509295909350565b60006020828403121561311e5761311d612964565b5b600061312c84828501612d35565b91505092915050565b6000806000806060858703121561314f5761314e612964565b5b600061315d87828801612d35565b945050602085013567ffffffffffffffff81111561317e5761317d612969565b5b61318a87828801612d54565b9350935050604061319d87828801612d35565b91505092959194509250565b600080604083850312156131c0576131bf612964565b5b60006131ce85828601612d35565b925050602083013567ffffffffffffffff8111156131ef576131ee612969565b5b6131fb85828601612c8c565b9150509250929050565b6000602082019050818103600083015261321f8184612a78565b905092915050565b6000806020838503121561323e5761323d612964565b5b600083013567ffffffffffffffff81111561325c5761325b612969565b5b61326885828601612d54565b92509250509250929050565b60006020820190506132896000830184612a12565b92915050565b600080604083850312156132a6576132a5612964565b5b60006132b48582860161298f565b92505060206132c58582860161298f565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133048161296e565b82525050565b61331381612a00565b82525050565b600082825260208201905092915050565b600061333582612a21565b61333f8185613319565b935061334f818560208601612a3d565b61335881612a67565b840191505092915050565b61336c81612ab1565b82525050565b60006101608301600083015161338b60008601826132fb565b50602083015161339e602086018261330a565b50604083015184820360408601526133b6828261332a565b91505060608301516133cb6060860182613363565b5060808301516133de6080860182613363565b5060a08301516133f160a0860182613363565b5060c083015161340460c08601826132fb565b5060e083015161341760e08601826132fb565b5061010083015161342c6101008601826132fb565b5061012083015161344161012086018261330a565b5061014083015184820361014086015261345b828261332a565b9150508091505092915050565b60006134748383613372565b905092915050565b6000602082019050919050565b6000613494826132cf565b61349e81856132da565b9350836020820285016134b0856132eb565b8060005b858110156134ec57848403895281516134cd8582613468565b94506134d88361347c565b925060208a019950506001810190506134b4565b50829750879550505050505092915050565b600060208201905081810360008301526135188184613489565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061356757607f821691505b60208210810361357a57613579613520565b5b50919050565b7f4450463a20494e56414c49445f5045524d495353494f4e5f4348414e47450000600082015250565b60006135b6601e83612a2c565b91506135c182613580565b602082019050919050565b600060208201905081810360008301526135e5816135a9565b9050919050565b600081905092915050565b600061360282612a21565b61360c81856135ec565b935061361c818560208601612a3d565b80840191505092915050565b600061363482846135f7565b915081905092915050565b7f4450463a204f5045524154494f4e5f414c52454144595f52455354524943544560008201527f4400000000000000000000000000000000000000000000000000000000000000602082015250565b600061369b602183612a2c565b91506136a68261363f565b604082019050919050565b600060208201905081810360008301526136ca8161368e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061370b8261296e565b91506137168361296e565b925082820390508181111561372e5761372d6136d1565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026137967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613759565b6137a08683613759565b95508019841693508086168417925050509392505050565b6000819050919050565b60006137dd6137d86137d38461296e565b6137b8565b61296e565b9050919050565b6000819050919050565b6137f7836137c2565b61380b613803826137e4565b848454613766565b825550505050565b600090565b613820613813565b61382b8184846137ee565b505050565b5b8181101561384f57613844600082613818565b600181019050613831565b5050565b601f8211156138945761386581613734565b61386e84613749565b8101602085101561387d578190505b61389161388985613749565b830182613830565b50505b505050565b600082821c905092915050565b60006138b760001984600802613899565b1980831691505092915050565b60006138d083836138a6565b9150826002028217905092915050565b6138e982612a21565b67ffffffffffffffff81111561390257613901612b8f565b5b61390c825461354f565b613917828285613853565b600060209050601f83116001811461394a5760008415613938578287015190505b61394285826138c4565b8655506139aa565b601f19841661395886613734565b60005b828110156139805784890151825560018201915060208501945060208101905061395b565b8683101561399d5784890151613999601f8916826138a6565b8355505b6001600288020188555050505b505050505050565b60006139bd8261296e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139ef576139ee6136d1565b5b600182019050919050565b6000613a058261296e565b915060008203613a1857613a176136d1565b5b600182039050919050565b7f4450463a204f5045524154494f4e5f414c52454144595f414c4c4f5745440000600082015250565b6000613a59601e83612a2c565b9150613a6482613a23565b602082019050919050565b60006020820190508181036000830152613a8881613a4c565b9050919050565b6000613a9b83856135ec565b9350613aa8838584612c3b565b82840190509392505050565b6000613ac1828486613a8f565b91508190509392505050565b7f4450463a204f5045524154494f4e5f4e4f545f414c4c4f574544000000000000600082015250565b6000613b03601a83612a2c565b9150613b0e82613acd565b602082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b7f4450463a2053544152545f4944585f5a45524f00000000000000000000000000600082015250565b6000613b6f601383612a2c565b9150613b7a82613b39565b602082019050919050565b60006020820190508181036000830152613b9e81613b62565b9050919050565b7f4450463a204348554e4b5f53495a455f5a45524f000000000000000000000000600082015250565b6000613bdb601483612a2c565b9150613be682613ba5565b602082019050919050565b60006020820190508181036000830152613c0a81613bce565b9050919050565b6000613c1c8261296e565b9150613c278361296e565b9250828201905080821115613c3f57613c3e6136d1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4450463a204f5045524154494f4e5f4e4f545f52455354524943544544000000600082015250565b6000613caa601d83612a2c565b9150613cb582613c74565b602082019050919050565b60006020820190508181036000830152613cd981613c9d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b50565b6000613d1f6000836135ec565b9150613d2a82613d0f565b600082019050919050565b6000613d4082613d12565b915081905091905056fea264697066735822122088896a5875ca8d6c8a56e396e534b4ef81d54a5ac82873d608028cc7de4f140764736f6c63430008140033";
619
619
 
620
620
  type DataPrivacyFrameworkMockConstructorParams =
621
621
  | [signer?: Signer]
@@ -566,7 +566,7 @@ const _abi = [
566
566
  ] as const;
567
567
 
568
568
  const _bytecode =
569
- "0x60806040523480156200001157600080fd5b506040518060400160405280601081526020017f5072697661746545524332304d6f636b000000000000000000000000000000008152506040518060400160405280600581526020017f504532304d00000000000000000000000000000000000000000000000000000081525081600490816200008f919062000324565b508060059081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b612ab7806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063313ce567116100ad57806396b2db381161007157806396b2db3814610344578063a42c0af914610374578063a7d9ad6a146103a4578063a9059cbb146103d4578063dd62ed3e1461040457610121565b8063313ce5671461028a57806370a08231146102a8578063722713f7146102d85780638269bcc3146102f657806395d89b411461032657610121565b806313691c76116100f457806313691c76146101d457806318160ddd146101f057806323b872dd1461020e57806326a9b3f11461023e5780632893c5b01461026e57610121565b8063043d20851461012657806306fdde031461015657806308a2032a14610174578063095ea7b3146101a4575b600080fd5b610140600480360381019061013b9190611f08565b610434565b60405161014d9190611f44565b60405180910390f35b61015e61049c565b60405161016b9190611fef565b60405180910390f35b61018e60048036038101906101899190612035565b61052e565b60405161019b91906120e9565b60405180910390f35b6101be60048036038101906101b99190612130565b610572565b6040516101cb919061218b565b60405180910390f35b6101ee60048036038101906101e991906121e6565b610595565b005b6101f86105ac565b6040516102059190612235565b60405180910390f35b61022860048036038101906102239190612250565b6105b1565b60405161023591906120e9565b60405180910390f35b610258600480360381019061025391906122cf565b6105de565b604051610265919061218b565b60405180910390f35b610288600480360381019061028391906121e6565b610756565b005b61029261076d565b60405161029f919061232b565b60405180910390f35b6102c260048036038101906102bd9190611f08565b610776565b6040516102cf9190612355565b60405180910390f35b6102e06107c2565b6040516102ed919061237f565b60405180910390f35b610310600480360381019061030b9190611f08565b6107d9565b60405161031d919061218b565b60405180910390f35b61032e6108d3565b60405161033b9190611fef565b60405180910390f35b61035e600480360381019061035991906122cf565b610965565b60405161036b919061237f565b60405180910390f35b61038e6004803603810190610389919061239a565b610a9b565b60405161039b919061218b565b60405180910390f35b6103be60048036038101906103b9919061239a565b610ad5565b6040516103cb91906120e9565b60405180910390f35b6103ee60048036038101906103e99190612130565b610b0d565b6040516103fb91906120e9565b60405180910390f35b61041e600480360381019061041991906123f6565b610b2e565b60405161042b9190612487565b60405180910390f35b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060600480546104ab906124d1565b80601f01602080910402602001604051908101604052809291908181526020018280546104d7906124d1565b80156105245780601f106104f957610100808354040283529160200191610524565b820191906000526020600020905b81548152906001019060200180831161050757829003601f168201915b5050505050905090565b600080610539610be3565b9050600061054f8461054a906126d9565b610beb565b905061055c868383610c92565b610567868683610de7565b925050509392505050565b60008061057d610be3565b905061058a818585610ee0565b600191505092915050565b6105a7826105a28361112d565b6111d4565b505050565b600090565b6000806105bc610be3565b90506105c9858285610c92565b6105d4858585610de7565b9150509392505050565b6000806105f16105ec610be3565b61125b565b905082156106a457600060026000610607610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506106966106908260000154611300565b8361132b565b81600101819055505061074b565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106ef610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061074161073b8260000154611300565b8361132b565b8160020181905550505b600191505092915050565b610768826107638361112d565b6113ea565b505050565b60006002905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60006107d46107cf610be3565b611471565b905090565b6000806107ec6107e7610be3565b611471565b9050826000806107fa610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061087c818461132b565b60016000610888610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506001915050919050565b6060600580546108e2906124d1565b80601f016020809104026020016040519081016040528092919081815260200182805461090e906124d1565b801561095b5780601f106109305761010080835404028352916020019161095b565b820191906000526020600020905b81548152906001019060200180831161093e57829003601f168201915b5050505050905090565b60008115610a03576109fc6002600061097c610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b9050610a95565b610a92600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a4f610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b90505b92915050565b600080610aa6610be3565b90506000610abc84610ab7906126d9565b610beb565b9050610ac9828683610ee0565b60019250505092915050565b600080610ae0610be3565b90506000610af684610af1906126d9565b610beb565b9050610b03828683610de7565b9250505092915050565b600080610b18610be3565b9050610b25818585610de7565b91505092915050565b610b36611e5b565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050905092915050565b600033905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e10600480811115610c1d57610c1c6126ec565b5b60f81b846000015185602001516040518463ffffffff1660e01b8152600401610c48939291906127ab565b6020604051808303816000875af1158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b9190612815565b9050919050565b6000610cdf600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b90506000610d6b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b90506000610d8982610d8467ffffffffffffffff61112d565b6114ca565b90506000610d978486611561565b90506000610da58487611561565b90506000610dcf610dbf85610dba86866115f8565b6115f8565b610dc9878a61168f565b87611726565b9050610ddc898983610ee0565b505050505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610e5a5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e519190611f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ecc5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ec39190611f44565b60405180910390fd5b610ed78484846117c0565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f525760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f499190611f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc45760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610fbb9190611f44565b60405180910390fd5b6000610fcf82611996565b90506000610fdc8561125b565b90506000610fea848361132b565b9050610ff58561125b565b91506000611003858461132b565b9050604051806060016040528085815260200183815260200182815250600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7848460405161111c929190612842565b60405180910390a350505050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060048081111561115f5761115e6126ec565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b815260040161118a92919061286b565b6020604051808303816000875af11580156111a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cd9190612815565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112475760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161123e9190611f44565b60405180910390fd5b611253836000846117c0565b905092915050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112f7578290505b80915050919050565b600080820361131a57611313600061112d565b9050611326565b61132382611a33565b90505b919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16633c6f0e6860048081111561135d5761135c6126ec565b5b60f81b858560405160200161137291906128dc565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161139f939291906127ab565b6020604051808303816000875af11580156113be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e29190612815565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361145d5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114549190611f44565b60405180910390fd5b611469600084846117c0565b905092915050565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506114c281611300565b915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6114f66004806000611ad0565b85856040518463ffffffff1660e01b815260040161151693929190612932565b6020604051808303816000875af1158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd14869361158d6004806000611ad0565b85856040518463ffffffff1660e01b81526004016115ad93929190612932565b6020604051808303816000875af11580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f09190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663fb7da35f6116246000806000611ad0565b85856040518463ffffffff1660e01b815260040161164493929190612932565b6020604051808303816000875af1158015611663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116879190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26116bb6004806000611ad0565b85856040518463ffffffff1660e01b81526004016116db93929190612932565b6020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166320cc408d6117526004806000611ad0565b8686866040518563ffffffff1660e01b81526004016117749493929190612969565b6020604051808303816000875af1158015611793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b79190612815565b90509392505050565b600080600083905060006117d46001611b31565b9050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611854576000611817600354611300565b90506118238187611be5565b905061182e81611996565b600381905550600061183f88611471565b905061184b8188611be5565b945050506118a1565b600061185f88611471565b9050600061186c88611471565b9050600061187b83838a611c7c565b8096508198508293505050506118918a82611d31565b61189b868361168f565b94505050505b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036119055760006118e2600354611300565b90506118ee818461168f565b90506118f981611996565b60038190555050611910565b61190f8684611d31565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44611969858b61132b565b611973868b61132b565b604051611981929190612842565b60405180910390a38093505050509392505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663c50c9c026004808111156119c8576119c76126ec565b5b60f81b846040518363ffffffff1660e01b81526004016119e992919061286b565b6020604051808303816000875af1158015611a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2c9190612815565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d2c135e5600480811115611a6557611a646126ec565b5b60f81b846040518363ffffffff1660e01b8152600401611a8692919061286b565b6020604051808303816000875af1158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac99190612815565b9050919050565b6000816002811115611ae557611ae46126ec565b5b60ff166008846004811115611afd57611afc6126ec565b5b61ffff16901b61ffff166010866004811115611b1c57611b1b6126ec565b5b62ffffff16901b171760e81b90509392505050565b60008082611b40576000611b43565b60015b60ff169050606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060006004811115611b7957611b786126ec565b5b60f81b836040518363ffffffff1660e01b8152600401611b9a92919061286b565b6020604051808303816000875af1158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd9190612815565b915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150611c116004806000611ad0565b85856040518463ffffffff1660e01b8152600401611c3193929190612932565b6020604051808303816000875af1158015611c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c749190612815565b905092915050565b600080600080600080606473ffffffffffffffffffffffffffffffffffffffff166356c72d28611cb160048060046000611da3565b8b8b8b6040518563ffffffff1660e01b8152600401611cd394939291906129e9565b6060604051808303816000875af1158015611cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d169190612a2e565b92509250925082828295509550955050505093509350939050565b6000611d3c8361125b565b9050611d488282611e28565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155905050505050565b6000816002811115611db857611db76126ec565b5b60ff166008846004811115611dd057611dcf6126ec565b5b61ffff16901b61ffff166010866004811115611def57611dee6126ec565b5b62ffffff16901b62ffffff166018886004811115611e1057611e0f6126ec565b5b63ffffffff16901b17171760e01b9050949350505050565b611e30611e7c565b611e3983611996565b816000018181525050611e4c838361132b565b81602001818152505092915050565b60405180606001604052806000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ed582611eaa565b9050919050565b611ee581611eca565b8114611ef057600080fd5b50565b600081359050611f0281611edc565b92915050565b600060208284031215611f1e57611f1d611ea0565b5b6000611f2c84828501611ef3565b91505092915050565b611f3e81611eca565b82525050565b6000602082019050611f596000830184611f35565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f99578082015181840152602081019050611f7e565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fc182611f5f565b611fcb8185611f6a565b9350611fdb818560208601611f7b565b611fe481611fa5565b840191505092915050565b600060208201905081810360008301526120098184611fb6565b905092915050565b600080fd5b60006040828403121561202c5761202b612011565b5b81905092915050565b60008060006060848603121561204e5761204d611ea0565b5b600061205c86828701611ef3565b935050602061206d86828701611ef3565b925050604084013567ffffffffffffffff81111561208e5761208d611ea5565b5b61209a86828701612016565b9150509250925092565b6000819050919050565b6000819050919050565b60006120d36120ce6120c9846120a4565b6120ae565b6120a4565b9050919050565b6120e3816120b8565b82525050565b60006020820190506120fe60008301846120da565b92915050565b61210d816120a4565b811461211857600080fd5b50565b60008135905061212a81612104565b92915050565b6000806040838503121561214757612146611ea0565b5b600061215585828601611ef3565b92505060206121668582860161211b565b9150509250929050565b60008115159050919050565b61218581612170565b82525050565b60006020820190506121a0600083018461217c565b92915050565b600067ffffffffffffffff82169050919050565b6121c3816121a6565b81146121ce57600080fd5b50565b6000813590506121e0816121ba565b92915050565b600080604083850312156121fd576121fc611ea0565b5b600061220b85828601611ef3565b925050602061221c858286016121d1565b9150509250929050565b61222f816120a4565b82525050565b600060208201905061224a6000830184612226565b92915050565b60008060006060848603121561226957612268611ea0565b5b600061227786828701611ef3565b935050602061228886828701611ef3565b92505060406122998682870161211b565b9150509250925092565b6122ac81612170565b81146122b757600080fd5b50565b6000813590506122c9816122a3565b92915050565b600080604083850312156122e6576122e5611ea0565b5b60006122f485828601611ef3565b9250506020612305858286016122ba565b9150509250929050565b600060ff82169050919050565b6123258161230f565b82525050565b6000602082019050612340600083018461231c565b92915050565b61234f816120b8565b82525050565b600060208201905061236a6000830184612346565b92915050565b612379816120b8565b82525050565b60006020820190506123946000830184612370565b92915050565b600080604083850312156123b1576123b0611ea0565b5b60006123bf85828601611ef3565b925050602083013567ffffffffffffffff8111156123e0576123df611ea5565b5b6123ec85828601612016565b9150509250929050565b6000806040838503121561240d5761240c611ea0565b5b600061241b85828601611ef3565b925050602061242c85828601611ef3565b9150509250929050565b61243f816120b8565b82525050565b60608201600082015161245b6000850182612436565b50602082015161246e6020850182612436565b5060408201516124816040850182612436565b50505050565b600060608201905061249c6000830184612445565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124e957607f821691505b6020821081036124fc576124fb6124a2565b5b50919050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61253f82611fa5565b810181811067ffffffffffffffff8211171561255e5761255d612507565b5b80604052505050565b6000612571611e96565b905061257d8282612536565b919050565b600080fd5b612590816120a4565b811461259b57600080fd5b50565b6000813590506125ad81612587565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff8211156125d8576125d7612507565b5b6125e182611fa5565b9050602081019050919050565b82818337600083830152505050565b600061261061260b846125bd565b612567565b90508281526020810184848401111561262c5761262b6125b8565b5b6126378482856125ee565b509392505050565b600082601f830112612654576126536125b3565b5b81356126648482602086016125fd565b91505092915050565b60006040828403121561268357612682612502565b5b61268d6040612567565b9050600061269d8482850161259e565b600083015250602082013567ffffffffffffffff8111156126c1576126c0612582565b5b6126cd8482850161263f565b60208301525092915050565b60006126e5368361266d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6127508161271b565b82525050565b600081519050919050565b600082825260208201905092915050565b600061277d82612756565b6127878185612761565b9350612797818560208601611f7b565b6127a081611fa5565b840191505092915050565b60006060820190506127c06000830186612747565b6127cd6020830185612226565b81810360408301526127df8184612772565b9050949350505050565b6127f2816120a4565b81146127fd57600080fd5b50565b60008151905061280f816127e9565b92915050565b60006020828403121561282b5761282a611ea0565b5b600061283984828501612800565b91505092915050565b60006040820190506128576000830185612346565b6128646020830184612346565b9392505050565b60006040820190506128806000830185612747565b61288d6020830184612226565b9392505050565b60008160601b9050919050565b60006128ac82612894565b9050919050565b60006128be826128a1565b9050919050565b6128d66128d182611eca565b6128b3565b82525050565b60006128e882846128c5565b60148201915081905092915050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b61292c816128f7565b82525050565b60006060820190506129476000830186612923565b6129546020830185612226565b6129616040830184612226565b949350505050565b600060808201905061297e6000830187612923565b61298b6020830186612226565b6129986040830185612226565b6129a56060830184612226565b95945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129e3816129ae565b82525050565b60006080820190506129fe60008301876129da565b612a0b6020830186612226565b612a186040830185612226565b612a256060830184612226565b95945050505050565b600080600060608486031215612a4757612a46611ea0565b5b6000612a5586828701612800565b9350506020612a6686828701612800565b9250506040612a7786828701612800565b915050925092509256fea26469706673582212201d12ede1ad6b9e959c09ae74c66053f6655ab89c13462915f9e3e6ba3e905b5864736f6c63430008140033";
569
+ "0x60806040523480156200001157600080fd5b506040518060400160405280601081526020017f5072697661746545524332304d6f636b000000000000000000000000000000008152506040518060400160405280600581526020017f504532304d00000000000000000000000000000000000000000000000000000081525081600490816200008f919062000324565b508060059081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b612ab7806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063313ce567116100ad57806396b2db381161007157806396b2db3814610344578063a42c0af914610374578063a7d9ad6a146103a4578063a9059cbb146103d4578063dd62ed3e1461040457610121565b8063313ce5671461028a57806370a08231146102a8578063722713f7146102d85780638269bcc3146102f657806395d89b411461032657610121565b806313691c76116100f457806313691c76146101d457806318160ddd146101f057806323b872dd1461020e57806326a9b3f11461023e5780632893c5b01461026e57610121565b8063043d20851461012657806306fdde031461015657806308a2032a14610174578063095ea7b3146101a4575b600080fd5b610140600480360381019061013b9190611f08565b610434565b60405161014d9190611f44565b60405180910390f35b61015e61049c565b60405161016b9190611fef565b60405180910390f35b61018e60048036038101906101899190612035565b61052e565b60405161019b91906120e9565b60405180910390f35b6101be60048036038101906101b99190612130565b610572565b6040516101cb919061218b565b60405180910390f35b6101ee60048036038101906101e991906121e6565b610595565b005b6101f86105ac565b6040516102059190612235565b60405180910390f35b61022860048036038101906102239190612250565b6105b1565b60405161023591906120e9565b60405180910390f35b610258600480360381019061025391906122cf565b6105de565b604051610265919061218b565b60405180910390f35b610288600480360381019061028391906121e6565b610756565b005b61029261076d565b60405161029f919061232b565b60405180910390f35b6102c260048036038101906102bd9190611f08565b610776565b6040516102cf9190612355565b60405180910390f35b6102e06107c2565b6040516102ed919061237f565b60405180910390f35b610310600480360381019061030b9190611f08565b6107d9565b60405161031d919061218b565b60405180910390f35b61032e6108d3565b60405161033b9190611fef565b60405180910390f35b61035e600480360381019061035991906122cf565b610965565b60405161036b919061237f565b60405180910390f35b61038e6004803603810190610389919061239a565b610a9b565b60405161039b919061218b565b60405180910390f35b6103be60048036038101906103b9919061239a565b610ad5565b6040516103cb91906120e9565b60405180910390f35b6103ee60048036038101906103e99190612130565b610b0d565b6040516103fb91906120e9565b60405180910390f35b61041e600480360381019061041991906123f6565b610b2e565b60405161042b9190612487565b60405180910390f35b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060600480546104ab906124d1565b80601f01602080910402602001604051908101604052809291908181526020018280546104d7906124d1565b80156105245780601f106104f957610100808354040283529160200191610524565b820191906000526020600020905b81548152906001019060200180831161050757829003601f168201915b5050505050905090565b600080610539610be3565b9050600061054f8461054a906126d9565b610beb565b905061055c868383610c92565b610567868683610de7565b925050509392505050565b60008061057d610be3565b905061058a818585610ee0565b600191505092915050565b6105a7826105a28361112d565b6111d4565b505050565b600090565b6000806105bc610be3565b90506105c9858285610c92565b6105d4858585610de7565b9150509392505050565b6000806105f16105ec610be3565b61125b565b905082156106a457600060026000610607610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506106966106908260000154611300565b8361132b565b81600101819055505061074b565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106ef610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061074161073b8260000154611300565b8361132b565b8160020181905550505b600191505092915050565b610768826107638361112d565b6113ea565b505050565b60006002905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60006107d46107cf610be3565b611471565b905090565b6000806107ec6107e7610be3565b611471565b9050826000806107fa610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061087c818461132b565b60016000610888610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506001915050919050565b6060600580546108e2906124d1565b80601f016020809104026020016040519081016040528092919081815260200182805461090e906124d1565b801561095b5780601f106109305761010080835404028352916020019161095b565b820191906000526020600020905b81548152906001019060200180831161093e57829003601f168201915b5050505050905090565b60008115610a03576109fc6002600061097c610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b9050610a95565b610a92600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a4f610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b90505b92915050565b600080610aa6610be3565b90506000610abc84610ab7906126d9565b610beb565b9050610ac9828683610ee0565b60019250505092915050565b600080610ae0610be3565b90506000610af684610af1906126d9565b610beb565b9050610b03828683610de7565b9250505092915050565b600080610b18610be3565b9050610b25818585610de7565b91505092915050565b610b36611e5b565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050905092915050565b600033905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e10600480811115610c1d57610c1c6126ec565b5b60f81b846000015185602001516040518463ffffffff1660e01b8152600401610c48939291906127ab565b6020604051808303816000875af1158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b9190612815565b9050919050565b6000610cdf600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b90506000610d6b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b90506000610d8982610d8467ffffffffffffffff61112d565b6114ca565b90506000610d978486611561565b90506000610da58487611561565b90506000610dcf610dbf85610dba86866115f8565b6115f8565b610dc9878a61168f565b87611726565b9050610ddc898983610ee0565b505050505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610e5a5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e519190611f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ecc5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ec39190611f44565b60405180910390fd5b610ed78484846117c0565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f525760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f499190611f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc45760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610fbb9190611f44565b60405180910390fd5b6000610fcf82611996565b90506000610fdc8561125b565b90506000610fea848361132b565b9050610ff58561125b565b91506000611003858461132b565b9050604051806060016040528085815260200183815260200182815250600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7848460405161111c929190612842565b60405180910390a350505050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060048081111561115f5761115e6126ec565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b815260040161118a92919061286b565b6020604051808303816000875af11580156111a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cd9190612815565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112475760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161123e9190611f44565b60405180910390fd5b611253836000846117c0565b905092915050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112f7578290505b80915050919050565b600080820361131a57611313600061112d565b9050611326565b61132382611a33565b90505b919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16633c6f0e6860048081111561135d5761135c6126ec565b5b60f81b858560405160200161137291906128dc565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161139f939291906127ab565b6020604051808303816000875af11580156113be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e29190612815565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361145d5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114549190611f44565b60405180910390fd5b611469600084846117c0565b905092915050565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506114c281611300565b915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6114f66004806000611ad0565b85856040518463ffffffff1660e01b815260040161151693929190612932565b6020604051808303816000875af1158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd14869361158d6004806000611ad0565b85856040518463ffffffff1660e01b81526004016115ad93929190612932565b6020604051808303816000875af11580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f09190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663fb7da35f6116246000806000611ad0565b85856040518463ffffffff1660e01b815260040161164493929190612932565b6020604051808303816000875af1158015611663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116879190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26116bb6004806000611ad0565b85856040518463ffffffff1660e01b81526004016116db93929190612932565b6020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166320cc408d6117526004806000611ad0565b8686866040518563ffffffff1660e01b81526004016117749493929190612969565b6020604051808303816000875af1158015611793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b79190612815565b90509392505050565b600080600083905060006117d46001611b31565b9050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611854576000611817600354611300565b90506118238187611be5565b905061182e81611996565b600381905550600061183f88611471565b905061184b8188611be5565b945050506118a1565b600061185f88611471565b9050600061186c88611471565b9050600061187b83838a611c7c565b8096508198508293505050506118918a82611d31565b61189b868361168f565b94505050505b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036119055760006118e2600354611300565b90506118ee818461168f565b90506118f981611996565b60038190555050611910565b61190f8684611d31565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44611969858b61132b565b611973868b61132b565b604051611981929190612842565b60405180910390a38093505050509392505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663c50c9c026004808111156119c8576119c76126ec565b5b60f81b846040518363ffffffff1660e01b81526004016119e992919061286b565b6020604051808303816000875af1158015611a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2c9190612815565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d2c135e5600480811115611a6557611a646126ec565b5b60f81b846040518363ffffffff1660e01b8152600401611a8692919061286b565b6020604051808303816000875af1158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac99190612815565b9050919050565b6000816002811115611ae557611ae46126ec565b5b60ff166008846004811115611afd57611afc6126ec565b5b61ffff16901b61ffff166010866004811115611b1c57611b1b6126ec565b5b62ffffff16901b171760e81b90509392505050565b60008082611b40576000611b43565b60015b60ff169050606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060006004811115611b7957611b786126ec565b5b60f81b836040518363ffffffff1660e01b8152600401611b9a92919061286b565b6020604051808303816000875af1158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd9190612815565b915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150611c116004806000611ad0565b85856040518463ffffffff1660e01b8152600401611c3193929190612932565b6020604051808303816000875af1158015611c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c749190612815565b905092915050565b600080600080600080606473ffffffffffffffffffffffffffffffffffffffff166356c72d28611cb160048060046000611da3565b8b8b8b6040518563ffffffff1660e01b8152600401611cd394939291906129e9565b6060604051808303816000875af1158015611cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d169190612a2e565b92509250925082828295509550955050505093509350939050565b6000611d3c8361125b565b9050611d488282611e28565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155905050505050565b6000816002811115611db857611db76126ec565b5b60ff166008846004811115611dd057611dcf6126ec565b5b61ffff16901b61ffff166010866004811115611def57611dee6126ec565b5b62ffffff16901b62ffffff166018886004811115611e1057611e0f6126ec565b5b63ffffffff16901b17171760e01b9050949350505050565b611e30611e7c565b611e3983611996565b816000018181525050611e4c838361132b565b81602001818152505092915050565b60405180606001604052806000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ed582611eaa565b9050919050565b611ee581611eca565b8114611ef057600080fd5b50565b600081359050611f0281611edc565b92915050565b600060208284031215611f1e57611f1d611ea0565b5b6000611f2c84828501611ef3565b91505092915050565b611f3e81611eca565b82525050565b6000602082019050611f596000830184611f35565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f99578082015181840152602081019050611f7e565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fc182611f5f565b611fcb8185611f6a565b9350611fdb818560208601611f7b565b611fe481611fa5565b840191505092915050565b600060208201905081810360008301526120098184611fb6565b905092915050565b600080fd5b60006040828403121561202c5761202b612011565b5b81905092915050565b60008060006060848603121561204e5761204d611ea0565b5b600061205c86828701611ef3565b935050602061206d86828701611ef3565b925050604084013567ffffffffffffffff81111561208e5761208d611ea5565b5b61209a86828701612016565b9150509250925092565b6000819050919050565b6000819050919050565b60006120d36120ce6120c9846120a4565b6120ae565b6120a4565b9050919050565b6120e3816120b8565b82525050565b60006020820190506120fe60008301846120da565b92915050565b61210d816120a4565b811461211857600080fd5b50565b60008135905061212a81612104565b92915050565b6000806040838503121561214757612146611ea0565b5b600061215585828601611ef3565b92505060206121668582860161211b565b9150509250929050565b60008115159050919050565b61218581612170565b82525050565b60006020820190506121a0600083018461217c565b92915050565b600067ffffffffffffffff82169050919050565b6121c3816121a6565b81146121ce57600080fd5b50565b6000813590506121e0816121ba565b92915050565b600080604083850312156121fd576121fc611ea0565b5b600061220b85828601611ef3565b925050602061221c858286016121d1565b9150509250929050565b61222f816120a4565b82525050565b600060208201905061224a6000830184612226565b92915050565b60008060006060848603121561226957612268611ea0565b5b600061227786828701611ef3565b935050602061228886828701611ef3565b92505060406122998682870161211b565b9150509250925092565b6122ac81612170565b81146122b757600080fd5b50565b6000813590506122c9816122a3565b92915050565b600080604083850312156122e6576122e5611ea0565b5b60006122f485828601611ef3565b9250506020612305858286016122ba565b9150509250929050565b600060ff82169050919050565b6123258161230f565b82525050565b6000602082019050612340600083018461231c565b92915050565b61234f816120b8565b82525050565b600060208201905061236a6000830184612346565b92915050565b612379816120b8565b82525050565b60006020820190506123946000830184612370565b92915050565b600080604083850312156123b1576123b0611ea0565b5b60006123bf85828601611ef3565b925050602083013567ffffffffffffffff8111156123e0576123df611ea5565b5b6123ec85828601612016565b9150509250929050565b6000806040838503121561240d5761240c611ea0565b5b600061241b85828601611ef3565b925050602061242c85828601611ef3565b9150509250929050565b61243f816120b8565b82525050565b60608201600082015161245b6000850182612436565b50602082015161246e6020850182612436565b5060408201516124816040850182612436565b50505050565b600060608201905061249c6000830184612445565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124e957607f821691505b6020821081036124fc576124fb6124a2565b5b50919050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61253f82611fa5565b810181811067ffffffffffffffff8211171561255e5761255d612507565b5b80604052505050565b6000612571611e96565b905061257d8282612536565b919050565b600080fd5b612590816120a4565b811461259b57600080fd5b50565b6000813590506125ad81612587565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff8211156125d8576125d7612507565b5b6125e182611fa5565b9050602081019050919050565b82818337600083830152505050565b600061261061260b846125bd565b612567565b90508281526020810184848401111561262c5761262b6125b8565b5b6126378482856125ee565b509392505050565b600082601f830112612654576126536125b3565b5b81356126648482602086016125fd565b91505092915050565b60006040828403121561268357612682612502565b5b61268d6040612567565b9050600061269d8482850161259e565b600083015250602082013567ffffffffffffffff8111156126c1576126c0612582565b5b6126cd8482850161263f565b60208301525092915050565b60006126e5368361266d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6127508161271b565b82525050565b600081519050919050565b600082825260208201905092915050565b600061277d82612756565b6127878185612761565b9350612797818560208601611f7b565b6127a081611fa5565b840191505092915050565b60006060820190506127c06000830186612747565b6127cd6020830185612226565b81810360408301526127df8184612772565b9050949350505050565b6127f2816120a4565b81146127fd57600080fd5b50565b60008151905061280f816127e9565b92915050565b60006020828403121561282b5761282a611ea0565b5b600061283984828501612800565b91505092915050565b60006040820190506128576000830185612346565b6128646020830184612346565b9392505050565b60006040820190506128806000830185612747565b61288d6020830184612226565b9392505050565b60008160601b9050919050565b60006128ac82612894565b9050919050565b60006128be826128a1565b9050919050565b6128d66128d182611eca565b6128b3565b82525050565b60006128e882846128c5565b60148201915081905092915050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b61292c816128f7565b82525050565b60006060820190506129476000830186612923565b6129546020830185612226565b6129616040830184612226565b949350505050565b600060808201905061297e6000830187612923565b61298b6020830186612226565b6129986040830185612226565b6129a56060830184612226565b95945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129e3816129ae565b82525050565b60006080820190506129fe60008301876129da565b612a0b6020830186612226565b612a186040830185612226565b612a256060830184612226565b95945050505050565b600080600060608486031215612a4757612a46611ea0565b5b6000612a5586828701612800565b9350506020612a6686828701612800565b9250506040612a7786828701612800565b915050925092509256fea2646970667358221220bd721cdefc7f563b65d2e3fe1a8c2e896d520fcfc372797d5f32bafbe8b83e3c64736f6c63430008140033";
570
570
 
571
571
  type PrivateERC20MockConstructorParams =
572
572
  | [signer?: Signer]
@@ -575,7 +575,7 @@ const _abi = [
575
575
  ] as const;
576
576
 
577
577
  const _bytecode =
578
- "0x60806040523480156200001157600080fd5b506040518060400160405280600781526020017f4578616d706c65000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f45584c000000000000000000000000000000000000000000000000000000000081525081600090816200008f919062000324565b508060019081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b612ca6806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101ea57806368862e1b1461021a57806370a082311461023657806395d89b4114610266576100f5565b8063095ea7b3116100d3578063095ea7b31461017857806318160ddd1461019457806323b872dd146101b257806342842e0e146101ce576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190611e3b565b61031c565b6040516101219190611e83565b60405180910390f35b610132610379565b60405161013f9190611f2e565b60405180910390f35b610162600480360381019061015d9190611f86565b61040b565b60405161016f9190611ff4565b60405180910390f35b610192600480360381019061018d919061203b565b610427565b005b61019c61043d565b6040516101a9919061208a565b60405180910390f35b6101cc60048036038101906101c791906120a5565b610447565b005b6101e860048036038101906101e391906120a5565b610549565b005b61020460048036038101906101ff9190611f86565b610569565b6040516102119190611ff4565b60405180910390f35b610234600480360381019061022f919061211c565b61057b565b005b610250600480360381019061024b9190612178565b6105fa565b60405161025d919061208a565b60405180910390f35b61026e6106b4565b60405161027b9190611f2e565b60405180910390f35b61029e600480360381019061029991906121d1565b610746565b005b6102ba60048036038101906102b59190612346565b61075c565b005b6102d660048036038101906102d19190611f86565b610779565b6040516102e391906124dd565b60405180910390f35b610306600480360381019061030191906124ff565b610801565b6040516103139190611e83565b60405180910390f35b60008060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610372575061037182610895565b5b9050919050565b6060600080546103889061256e565b80601f01602080910402602001604051908101604052809291908181526020018280546103b49061256e565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b5050505050905090565b60006104168261090f565b5061042082610997565b9050919050565b61043982826104346109d4565b6109dc565b5050565b6000600754905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104b95760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016104b09190611ff4565b60405180910390fd5b60006104cd83836104c86109d4565b6109ee565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610543578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161053a9392919061259f565b60405180910390fd5b50505050565b6105648383836040518060200160405280600081525061075c565b505050565b60006105748261090f565b9050919050565b6000600754905061058c8382610a9c565b610597338284610b95565b6001600760008282546105aa9190612605565b92505081905550808373ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe60405160405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361066d5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016106649190611ff4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546106c39061256e565b80601f01602080910402602001604051908101604052809291908181526020018280546106ef9061256e565b801561073c5780601f106107115761010080835404028352916020019161073c565b820191906000526020600020905b81548152906001019060200180831161071f57829003601f168201915b5050505050905090565b6107586107516109d4565b8383610bbe565b5050565b610767848484610447565b61077384848484610d2d565b50505050565b610781611cff565b60066000838152602001908152602001600020600101604051806020016040529081600082018054806020026020016040519081016040528092919081815260200182805480156107f157602002820191906000526020600020905b8154815260200190600101908083116107dd575b5050505050815250509050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610908575061090782610ee4565b5b9050919050565b60008061091b83610f4e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361098e57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610985919061208a565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6109e98383836001610f8b565b505050565b600080610a726006600086815260200190815260200160002060000160405180602001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610a6457602002820191906000526020600020905b815481526020019060010190808311610a50575b505050505081525050611150565b90506000610a8186868661122e565b9050610a908686846000611448565b80925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b0e5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610b059190611ff4565b60405180910390fd5b6000610b1c838360006109ee565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b905760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401610b879190611ff4565b60405180910390fd5b505050565b6000610ba982610ba4906128f8565b611584565b9050610bb88484836001611448565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c2f57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610c269190611ff4565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610d209190611e83565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115610ede578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02610d716109d4565b8685856040518563ffffffff1660e01b8152600401610d939493929190612960565b6020604051808303816000875af1925050508015610dcf57506040513d601f19601f82011682018060405250810190610dcc91906129c1565b60015b610e53573d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b506000815103610e4b57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610e429190611ff4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610edc57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610ed39190611ff4565b60405180910390fd5b505b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080610fc45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156110f8576000610fd48461090f565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561103f57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561105257506110508184610801565b155b1561109457826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161108b9190611ff4565b60405180910390fd5b81156110f657838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b611158611d12565b60008260000151519050600060405180602001604052808367ffffffffffffffff8111156111895761118861221b565b5b6040519080825280602002602001820160405280156111b75781602001602082028036833780820191505090505b50815250905060005b82811015611223576111ef856000015182815181106111e2576111e16129ee565b5b60200260200101516116eb565b82600001518281518110611206576112056129ee565b5b6020026020010181815250508061121c90612a1d565b90506111c0565b508092505050919050565b60008061123a84610f4e565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461127c5761127b818486611788565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461130d576112be600085600080610f8b565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611390576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff1661146984610569565b73ffffffffffffffffffffffffffffffffffffffff16036114c157826040517f868439130000000000000000000000000000000000000000000000000000000081526004016114b8919061208a565b60405180910390fd5b60006114cd838661184c565b90508115611541578060066000868152602001908152602001600020600082015181600001600082015181600001908051906020019061150e929190611d25565b5050506020820151816001016000820151816000019080519060200190611536929190611d25565b50505090505061157d565b8060200151600660008681526020019081526020016000206001016000820151816000019080519060200190611578929190611d25565b509050505b5050505050565b61158c611d12565b600082602001515190508083600001516000015151146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612ab1565b60405180910390fd5b600060405180602001604052808367ffffffffffffffff8111156116085761160761221b565b5b6040519080825280602002602001820160405280156116365781602001602082028036833780820191505090505b508152509050611644611d72565b60005b838110156116df57856000015160000151818151811061166a576116696129ee565b5b602002602001015182600001818152505085602001518181518110611692576116916129ee565b5b602002602001015182602001819052506116ab8261187d565b836000015182815181106116c2576116c16129ee565b5b602002602001018181525050806116d890612a1d565b9050611647565b50819350505050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d2c135e560048081111561171d5761171c612ad1565b5b60f81b846040518363ffffffff1660e01b815260040161173e929190612b3b565b6020604051808303816000875af115801561175d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117819190612b79565b9050919050565b611793838383611924565b61184757600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180857806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016117ff919061208a565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161183e929190612ba6565b60405180910390fd5b505050565b611854611d8c565b61185d836119e5565b816000018190525061186f8383611ac3565b816020018190525092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e106004808111156118af576118ae612ad1565b5b60f81b846000015185602001516040518463ffffffff1660e01b81526004016118da93929190612bcf565b6020604051808303816000875af11580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191d9190612b79565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119dc57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061199d575061199c8484610801565b5b806119db57508273ffffffffffffffffffffffffffffffffffffffff166119c383610997565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6119ed611cff565b60008260000151519050600060405180602001604052808367ffffffffffffffff811115611a1e57611a1d61221b565b5b604051908082528060200260200182016040528015611a4c5781602001602082028036833780820191505090505b50815250905060005b82811015611ab857611a8485600001518281518110611a7757611a766129ee565b5b6020026020010151611ba3565b82600001518281518110611a9b57611a9a6129ee565b5b60200260200101818152505080611ab190612a1d565b9050611a55565b508092505050919050565b611acb611cff565b60008360000151519050600060405180602001604052808367ffffffffffffffff811115611afc57611afb61221b565b5b604051908082528060200260200182016040528015611b2a5781602001602082028036833780820191505090505b50815250905060005b82811015611b9757611b6386600001518281518110611b5557611b546129ee565b5b602002602001015186611c40565b82600001518281518110611b7a57611b796129ee565b5b60200260200101818152505080611b9090612a1d565b9050611b33565b50809250505092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663c50c9c02600480811115611bd557611bd4612ad1565b5b60f81b846040518363ffffffff1660e01b8152600401611bf6929190612b3b565b6020604051808303816000875af1158015611c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c399190612b79565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16633c6f0e68600480811115611c7257611c71612ad1565b5b60f81b8585604051602001611c879190612c55565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401611cb493929190612bcf565b6020604051808303816000875af1158015611cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf79190612b79565b905092915050565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b828054828255906000526020600020908101928215611d61579160200282015b82811115611d60578251825591602001919060010190611d45565b5b509050611d6e9190611db2565b5090565b604051806040016040528060008152602001606081525090565b6040518060400160405280611d9f611cff565b8152602001611dac611cff565b81525090565b5b80821115611dcb576000816000905550600101611db3565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e1881611de3565b8114611e2357600080fd5b50565b600081359050611e3581611e0f565b92915050565b600060208284031215611e5157611e50611dd9565b5b6000611e5f84828501611e26565b91505092915050565b60008115159050919050565b611e7d81611e68565b82525050565b6000602082019050611e986000830184611e74565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ed8578082015181840152602081019050611ebd565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f0082611e9e565b611f0a8185611ea9565b9350611f1a818560208601611eba565b611f2381611ee4565b840191505092915050565b60006020820190508181036000830152611f488184611ef5565b905092915050565b6000819050919050565b611f6381611f50565b8114611f6e57600080fd5b50565b600081359050611f8081611f5a565b92915050565b600060208284031215611f9c57611f9b611dd9565b5b6000611faa84828501611f71565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611fde82611fb3565b9050919050565b611fee81611fd3565b82525050565b60006020820190506120096000830184611fe5565b92915050565b61201881611fd3565b811461202357600080fd5b50565b6000813590506120358161200f565b92915050565b6000806040838503121561205257612051611dd9565b5b600061206085828601612026565b925050602061207185828601611f71565b9150509250929050565b61208481611f50565b82525050565b600060208201905061209f600083018461207b565b92915050565b6000806000606084860312156120be576120bd611dd9565b5b60006120cc86828701612026565b93505060206120dd86828701612026565b92505060406120ee86828701611f71565b9150509250925092565b600080fd5b600060408284031215612113576121126120f8565b5b81905092915050565b6000806040838503121561213357612132611dd9565b5b600061214185828601612026565b925050602083013567ffffffffffffffff81111561216257612161611dde565b5b61216e858286016120fd565b9150509250929050565b60006020828403121561218e5761218d611dd9565b5b600061219c84828501612026565b91505092915050565b6121ae81611e68565b81146121b957600080fd5b50565b6000813590506121cb816121a5565b92915050565b600080604083850312156121e8576121e7611dd9565b5b60006121f685828601612026565b9250506020612207858286016121bc565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61225382611ee4565b810181811067ffffffffffffffff821117156122725761227161221b565b5b80604052505050565b6000612285611dcf565b9050612291828261224a565b919050565b600067ffffffffffffffff8211156122b1576122b061221b565b5b6122ba82611ee4565b9050602081019050919050565b82818337600083830152505050565b60006122e96122e484612296565b61227b565b90508281526020810184848401111561230557612304612216565b5b6123108482856122c7565b509392505050565b600082601f83011261232d5761232c612211565b5b813561233d8482602086016122d6565b91505092915050565b600080600080608085870312156123605761235f611dd9565b5b600061236e87828801612026565b945050602061237f87828801612026565b935050604061239087828801611f71565b925050606085013567ffffffffffffffff8111156123b1576123b0611dde565b5b6123bd87828801612318565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b600061241a61241561241084611f50565b6123f5565b611f50565b9050919050565b61242a816123ff565b82525050565b600061243c8383612421565b60208301905092915050565b6000602082019050919050565b6000612460826123c9565b61246a81856123d4565b9350612475836123e5565b8060005b838110156124a657815161248d8882612430565b975061249883612448565b925050600181019050612479565b5085935050505092915050565b600060208301600083015184820360008601526124d08282612455565b9150508091505092915050565b600060208201905081810360008301526124f781846124b3565b905092915050565b6000806040838503121561251657612515611dd9565b5b600061252485828601612026565b925050602061253585828601612026565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061258657607f821691505b6020821081036125995761259861253f565b5b50919050565b60006060820190506125b46000830186611fe5565b6125c1602083018561207b565b6125ce6040830184611fe5565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061261082611f50565b915061261b83611f50565b9250828201905080821115612633576126326125d6565b5b92915050565b600080fd5b600080fd5b600067ffffffffffffffff82111561265e5761265d61221b565b5b602082029050602081019050919050565b600080fd5b61267d81611f50565b811461268857600080fd5b50565b60008135905061269a81612674565b92915050565b60006126b36126ae84612643565b61227b565b905080838252602082019050602084028301858111156126d6576126d561266f565b5b835b818110156126ff57806126eb888261268b565b8452602084019350506020810190506126d8565b5050509392505050565b600082601f83011261271e5761271d612211565b5b813561272e8482602086016126a0565b91505092915050565b60006020828403121561274d5761274c612639565b5b612757602061227b565b9050600082013567ffffffffffffffff8111156127775761277661263e565b5b61278384828501612709565b60008301525092915050565b600067ffffffffffffffff8211156127aa576127a961221b565b5b602082029050602081019050919050565b60006127ce6127c98461278f565b61227b565b905080838252602082019050602084028301858111156127f1576127f061266f565b5b835b8181101561283857803567ffffffffffffffff81111561281657612815612211565b5b8086016128238982612318565b855260208501945050506020810190506127f3565b5050509392505050565b600082601f83011261285757612856612211565b5b81356128678482602086016127bb565b91505092915050565b60006040828403121561288657612885612639565b5b612890604061227b565b9050600082013567ffffffffffffffff8111156128b0576128af61263e565b5b6128bc84828501612737565b600083015250602082013567ffffffffffffffff8111156128e0576128df61263e565b5b6128ec84828501612842565b60208301525092915050565b60006129043683612870565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006129328261290b565b61293c8185612916565b935061294c818560208601611eba565b61295581611ee4565b840191505092915050565b60006080820190506129756000830187611fe5565b6129826020830186611fe5565b61298f604083018561207b565b81810360608301526129a18184612927565b905095945050505050565b6000815190506129bb81611e0f565b92915050565b6000602082840312156129d7576129d6611dd9565b5b60006129e5848285016129ac565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612a2882611f50565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a5a57612a596125d6565b5b600182019050919050565b7f4d50435f434f52453a20494e56414c49445f494e5055545f5445585400000000600082015250565b6000612a9b601c83611ea9565b9150612aa682612a65565b602082019050919050565b60006020820190508181036000830152612aca81612a8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612b3581612b00565b82525050565b6000604082019050612b506000830185612b2c565b612b5d602083018461207b565b9392505050565b600081519050612b7381611f5a565b92915050565b600060208284031215612b8f57612b8e611dd9565b5b6000612b9d84828501612b64565b91505092915050565b6000604082019050612bbb6000830185611fe5565b612bc8602083018461207b565b9392505050565b6000606082019050612be46000830186612b2c565b612bf1602083018561207b565b8181036040830152612c038184612927565b9050949350505050565b60008160601b9050919050565b6000612c2582612c0d565b9050919050565b6000612c3782612c1a565b9050919050565b612c4f612c4a82611fd3565b612c2c565b82525050565b6000612c618284612c3e565b6014820191508190509291505056fea2646970667358221220965dd8f88bf3e1221f9a29ff95bb95f0eca59f2883e14695f81679ea51ade90364736f6c63430008140033";
578
+ "0x60806040523480156200001157600080fd5b506040518060400160405280600781526020017f4578616d706c65000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f45584c000000000000000000000000000000000000000000000000000000000081525081600090816200008f919062000324565b508060019081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b612ca6806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101ea57806368862e1b1461021a57806370a082311461023657806395d89b4114610266576100f5565b8063095ea7b3116100d3578063095ea7b31461017857806318160ddd1461019457806323b872dd146101b257806342842e0e146101ce576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190611e3b565b61031c565b6040516101219190611e83565b60405180910390f35b610132610379565b60405161013f9190611f2e565b60405180910390f35b610162600480360381019061015d9190611f86565b61040b565b60405161016f9190611ff4565b60405180910390f35b610192600480360381019061018d919061203b565b610427565b005b61019c61043d565b6040516101a9919061208a565b60405180910390f35b6101cc60048036038101906101c791906120a5565b610447565b005b6101e860048036038101906101e391906120a5565b610549565b005b61020460048036038101906101ff9190611f86565b610569565b6040516102119190611ff4565b60405180910390f35b610234600480360381019061022f919061211c565b61057b565b005b610250600480360381019061024b9190612178565b6105fa565b60405161025d919061208a565b60405180910390f35b61026e6106b4565b60405161027b9190611f2e565b60405180910390f35b61029e600480360381019061029991906121d1565b610746565b005b6102ba60048036038101906102b59190612346565b61075c565b005b6102d660048036038101906102d19190611f86565b610779565b6040516102e391906124dd565b60405180910390f35b610306600480360381019061030191906124ff565b610801565b6040516103139190611e83565b60405180910390f35b60008060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610372575061037182610895565b5b9050919050565b6060600080546103889061256e565b80601f01602080910402602001604051908101604052809291908181526020018280546103b49061256e565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b5050505050905090565b60006104168261090f565b5061042082610997565b9050919050565b61043982826104346109d4565b6109dc565b5050565b6000600754905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104b95760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016104b09190611ff4565b60405180910390fd5b60006104cd83836104c86109d4565b6109ee565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610543578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161053a9392919061259f565b60405180910390fd5b50505050565b6105648383836040518060200160405280600081525061075c565b505050565b60006105748261090f565b9050919050565b6000600754905061058c8382610a9c565b610597338284610b95565b6001600760008282546105aa9190612605565b92505081905550808373ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe60405160405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361066d5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016106649190611ff4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546106c39061256e565b80601f01602080910402602001604051908101604052809291908181526020018280546106ef9061256e565b801561073c5780601f106107115761010080835404028352916020019161073c565b820191906000526020600020905b81548152906001019060200180831161071f57829003601f168201915b5050505050905090565b6107586107516109d4565b8383610bbe565b5050565b610767848484610447565b61077384848484610d2d565b50505050565b610781611cff565b60066000838152602001908152602001600020600101604051806020016040529081600082018054806020026020016040519081016040528092919081815260200182805480156107f157602002820191906000526020600020905b8154815260200190600101908083116107dd575b5050505050815250509050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610908575061090782610ee4565b5b9050919050565b60008061091b83610f4e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361098e57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610985919061208a565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6109e98383836001610f8b565b505050565b600080610a726006600086815260200190815260200160002060000160405180602001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610a6457602002820191906000526020600020905b815481526020019060010190808311610a50575b505050505081525050611150565b90506000610a8186868661122e565b9050610a908686846000611448565b80925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b0e5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610b059190611ff4565b60405180910390fd5b6000610b1c838360006109ee565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b905760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401610b879190611ff4565b60405180910390fd5b505050565b6000610ba982610ba4906128f8565b611584565b9050610bb88484836001611448565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c2f57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610c269190611ff4565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610d209190611e83565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115610ede578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02610d716109d4565b8685856040518563ffffffff1660e01b8152600401610d939493929190612960565b6020604051808303816000875af1925050508015610dcf57506040513d601f19601f82011682018060405250810190610dcc91906129c1565b60015b610e53573d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b506000815103610e4b57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610e429190611ff4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610edc57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610ed39190611ff4565b60405180910390fd5b505b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080610fc45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156110f8576000610fd48461090f565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561103f57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561105257506110508184610801565b155b1561109457826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161108b9190611ff4565b60405180910390fd5b81156110f657838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b611158611d12565b60008260000151519050600060405180602001604052808367ffffffffffffffff8111156111895761118861221b565b5b6040519080825280602002602001820160405280156111b75781602001602082028036833780820191505090505b50815250905060005b82811015611223576111ef856000015182815181106111e2576111e16129ee565b5b60200260200101516116eb565b82600001518281518110611206576112056129ee565b5b6020026020010181815250508061121c90612a1d565b90506111c0565b508092505050919050565b60008061123a84610f4e565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461127c5761127b818486611788565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461130d576112be600085600080610f8b565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611390576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff1661146984610569565b73ffffffffffffffffffffffffffffffffffffffff16036114c157826040517f868439130000000000000000000000000000000000000000000000000000000081526004016114b8919061208a565b60405180910390fd5b60006114cd838661184c565b90508115611541578060066000868152602001908152602001600020600082015181600001600082015181600001908051906020019061150e929190611d25565b5050506020820151816001016000820151816000019080519060200190611536929190611d25565b50505090505061157d565b8060200151600660008681526020019081526020016000206001016000820151816000019080519060200190611578929190611d25565b509050505b5050505050565b61158c611d12565b600082602001515190508083600001516000015151146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612ab1565b60405180910390fd5b600060405180602001604052808367ffffffffffffffff8111156116085761160761221b565b5b6040519080825280602002602001820160405280156116365781602001602082028036833780820191505090505b508152509050611644611d72565b60005b838110156116df57856000015160000151818151811061166a576116696129ee565b5b602002602001015182600001818152505085602001518181518110611692576116916129ee565b5b602002602001015182602001819052506116ab8261187d565b836000015182815181106116c2576116c16129ee565b5b602002602001018181525050806116d890612a1d565b9050611647565b50819350505050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d2c135e560048081111561171d5761171c612ad1565b5b60f81b846040518363ffffffff1660e01b815260040161173e929190612b3b565b6020604051808303816000875af115801561175d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117819190612b79565b9050919050565b611793838383611924565b61184757600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180857806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016117ff919061208a565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161183e929190612ba6565b60405180910390fd5b505050565b611854611d8c565b61185d836119e5565b816000018190525061186f8383611ac3565b816020018190525092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e106004808111156118af576118ae612ad1565b5b60f81b846000015185602001516040518463ffffffff1660e01b81526004016118da93929190612bcf565b6020604051808303816000875af11580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191d9190612b79565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119dc57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061199d575061199c8484610801565b5b806119db57508273ffffffffffffffffffffffffffffffffffffffff166119c383610997565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6119ed611cff565b60008260000151519050600060405180602001604052808367ffffffffffffffff811115611a1e57611a1d61221b565b5b604051908082528060200260200182016040528015611a4c5781602001602082028036833780820191505090505b50815250905060005b82811015611ab857611a8485600001518281518110611a7757611a766129ee565b5b6020026020010151611ba3565b82600001518281518110611a9b57611a9a6129ee565b5b60200260200101818152505080611ab190612a1d565b9050611a55565b508092505050919050565b611acb611cff565b60008360000151519050600060405180602001604052808367ffffffffffffffff811115611afc57611afb61221b565b5b604051908082528060200260200182016040528015611b2a5781602001602082028036833780820191505090505b50815250905060005b82811015611b9757611b6386600001518281518110611b5557611b546129ee565b5b602002602001015186611c40565b82600001518281518110611b7a57611b796129ee565b5b60200260200101818152505080611b9090612a1d565b9050611b33565b50809250505092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663c50c9c02600480811115611bd557611bd4612ad1565b5b60f81b846040518363ffffffff1660e01b8152600401611bf6929190612b3b565b6020604051808303816000875af1158015611c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c399190612b79565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16633c6f0e68600480811115611c7257611c71612ad1565b5b60f81b8585604051602001611c879190612c55565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401611cb493929190612bcf565b6020604051808303816000875af1158015611cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf79190612b79565b905092915050565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b828054828255906000526020600020908101928215611d61579160200282015b82811115611d60578251825591602001919060010190611d45565b5b509050611d6e9190611db2565b5090565b604051806040016040528060008152602001606081525090565b6040518060400160405280611d9f611cff565b8152602001611dac611cff565b81525090565b5b80821115611dcb576000816000905550600101611db3565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e1881611de3565b8114611e2357600080fd5b50565b600081359050611e3581611e0f565b92915050565b600060208284031215611e5157611e50611dd9565b5b6000611e5f84828501611e26565b91505092915050565b60008115159050919050565b611e7d81611e68565b82525050565b6000602082019050611e986000830184611e74565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ed8578082015181840152602081019050611ebd565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f0082611e9e565b611f0a8185611ea9565b9350611f1a818560208601611eba565b611f2381611ee4565b840191505092915050565b60006020820190508181036000830152611f488184611ef5565b905092915050565b6000819050919050565b611f6381611f50565b8114611f6e57600080fd5b50565b600081359050611f8081611f5a565b92915050565b600060208284031215611f9c57611f9b611dd9565b5b6000611faa84828501611f71565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611fde82611fb3565b9050919050565b611fee81611fd3565b82525050565b60006020820190506120096000830184611fe5565b92915050565b61201881611fd3565b811461202357600080fd5b50565b6000813590506120358161200f565b92915050565b6000806040838503121561205257612051611dd9565b5b600061206085828601612026565b925050602061207185828601611f71565b9150509250929050565b61208481611f50565b82525050565b600060208201905061209f600083018461207b565b92915050565b6000806000606084860312156120be576120bd611dd9565b5b60006120cc86828701612026565b93505060206120dd86828701612026565b92505060406120ee86828701611f71565b9150509250925092565b600080fd5b600060408284031215612113576121126120f8565b5b81905092915050565b6000806040838503121561213357612132611dd9565b5b600061214185828601612026565b925050602083013567ffffffffffffffff81111561216257612161611dde565b5b61216e858286016120fd565b9150509250929050565b60006020828403121561218e5761218d611dd9565b5b600061219c84828501612026565b91505092915050565b6121ae81611e68565b81146121b957600080fd5b50565b6000813590506121cb816121a5565b92915050565b600080604083850312156121e8576121e7611dd9565b5b60006121f685828601612026565b9250506020612207858286016121bc565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61225382611ee4565b810181811067ffffffffffffffff821117156122725761227161221b565b5b80604052505050565b6000612285611dcf565b9050612291828261224a565b919050565b600067ffffffffffffffff8211156122b1576122b061221b565b5b6122ba82611ee4565b9050602081019050919050565b82818337600083830152505050565b60006122e96122e484612296565b61227b565b90508281526020810184848401111561230557612304612216565b5b6123108482856122c7565b509392505050565b600082601f83011261232d5761232c612211565b5b813561233d8482602086016122d6565b91505092915050565b600080600080608085870312156123605761235f611dd9565b5b600061236e87828801612026565b945050602061237f87828801612026565b935050604061239087828801611f71565b925050606085013567ffffffffffffffff8111156123b1576123b0611dde565b5b6123bd87828801612318565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b600061241a61241561241084611f50565b6123f5565b611f50565b9050919050565b61242a816123ff565b82525050565b600061243c8383612421565b60208301905092915050565b6000602082019050919050565b6000612460826123c9565b61246a81856123d4565b9350612475836123e5565b8060005b838110156124a657815161248d8882612430565b975061249883612448565b925050600181019050612479565b5085935050505092915050565b600060208301600083015184820360008601526124d08282612455565b9150508091505092915050565b600060208201905081810360008301526124f781846124b3565b905092915050565b6000806040838503121561251657612515611dd9565b5b600061252485828601612026565b925050602061253585828601612026565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061258657607f821691505b6020821081036125995761259861253f565b5b50919050565b60006060820190506125b46000830186611fe5565b6125c1602083018561207b565b6125ce6040830184611fe5565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061261082611f50565b915061261b83611f50565b9250828201905080821115612633576126326125d6565b5b92915050565b600080fd5b600080fd5b600067ffffffffffffffff82111561265e5761265d61221b565b5b602082029050602081019050919050565b600080fd5b61267d81611f50565b811461268857600080fd5b50565b60008135905061269a81612674565b92915050565b60006126b36126ae84612643565b61227b565b905080838252602082019050602084028301858111156126d6576126d561266f565b5b835b818110156126ff57806126eb888261268b565b8452602084019350506020810190506126d8565b5050509392505050565b600082601f83011261271e5761271d612211565b5b813561272e8482602086016126a0565b91505092915050565b60006020828403121561274d5761274c612639565b5b612757602061227b565b9050600082013567ffffffffffffffff8111156127775761277661263e565b5b61278384828501612709565b60008301525092915050565b600067ffffffffffffffff8211156127aa576127a961221b565b5b602082029050602081019050919050565b60006127ce6127c98461278f565b61227b565b905080838252602082019050602084028301858111156127f1576127f061266f565b5b835b8181101561283857803567ffffffffffffffff81111561281657612815612211565b5b8086016128238982612318565b855260208501945050506020810190506127f3565b5050509392505050565b600082601f83011261285757612856612211565b5b81356128678482602086016127bb565b91505092915050565b60006040828403121561288657612885612639565b5b612890604061227b565b9050600082013567ffffffffffffffff8111156128b0576128af61263e565b5b6128bc84828501612737565b600083015250602082013567ffffffffffffffff8111156128e0576128df61263e565b5b6128ec84828501612842565b60208301525092915050565b60006129043683612870565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006129328261290b565b61293c8185612916565b935061294c818560208601611eba565b61295581611ee4565b840191505092915050565b60006080820190506129756000830187611fe5565b6129826020830186611fe5565b61298f604083018561207b565b81810360608301526129a18184612927565b905095945050505050565b6000815190506129bb81611e0f565b92915050565b6000602082840312156129d7576129d6611dd9565b5b60006129e5848285016129ac565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612a2882611f50565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a5a57612a596125d6565b5b600182019050919050565b7f4d50435f434f52453a20494e56414c49445f494e5055545f5445585400000000600082015250565b6000612a9b601c83611ea9565b9150612aa682612a65565b602082019050919050565b60006020820190508181036000830152612aca81612a8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612b3581612b00565b82525050565b6000604082019050612b506000830185612b2c565b612b5d602083018461207b565b9392505050565b600081519050612b7381611f5a565b92915050565b600060208284031215612b8f57612b8e611dd9565b5b6000612b9d84828501612b64565b91505092915050565b6000604082019050612bbb6000830185611fe5565b612bc8602083018461207b565b9392505050565b6000606082019050612be46000830186612b2c565b612bf1602083018561207b565b8181036040830152612c038184612927565b9050949350505050565b60008160601b9050919050565b6000612c2582612c0d565b9050919050565b6000612c3782612c1a565b9050919050565b612c4f612c4a82611fd3565b612c2c565b82525050565b6000612c618284612c3e565b6014820191508190509291505056fea2646970667358221220a4b17b38841a46a489c5635a2699344a47b440e120cf8fb8098b35aaa098cbb764736f6c63430008140033";
579
579
 
580
580
  type PrivateERC721URIStorageMockConstructorParams =
581
581
  | [signer?: Signer]