h-agent-swap 1.8.6 → 1.8.8

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "h-agent-swap",
3
- "version": "1.8.6",
3
+ "version": "1.8.8",
4
4
  "description": "agent-swap",
5
5
  "main": "src/index.js",
6
6
  "files": [
@@ -596,24 +596,51 @@
596
596
  "type": "tuple"
597
597
  },
598
598
  {
599
- "internalType": "uint256",
600
- "name": "taxAmount",
601
- "type": "uint256"
602
- },
603
- {
604
- "internalType": "uint256",
605
- "name": "backAmount",
606
- "type": "uint256"
607
- },
608
- {
609
- "internalType": "uint256",
610
- "name": "outReal",
611
- "type": "uint256"
612
- },
613
- {
614
- "internalType": "uint256",
615
- "name": "feeAmount",
616
- "type": "uint256"
599
+ "components": [
600
+ {
601
+ "internalType": "uint256",
602
+ "name": "taxAmount",
603
+ "type": "uint256"
604
+ },
605
+ {
606
+ "internalType": "uint256",
607
+ "name": "backAmount",
608
+ "type": "uint256"
609
+ },
610
+ {
611
+ "internalType": "uint256",
612
+ "name": "buyAmount",
613
+ "type": "uint256"
614
+ },
615
+ {
616
+ "internalType": "uint256",
617
+ "name": "outAmount",
618
+ "type": "uint256"
619
+ },
620
+ {
621
+ "internalType": "uint256",
622
+ "name": "feeAmount",
623
+ "type": "uint256"
624
+ },
625
+ {
626
+ "internalType": "uint256",
627
+ "name": "rewardAmount",
628
+ "type": "uint256"
629
+ },
630
+ {
631
+ "internalType": "bool",
632
+ "name": "win",
633
+ "type": "bool"
634
+ },
635
+ {
636
+ "internalType": "uint256",
637
+ "name": "change",
638
+ "type": "uint256"
639
+ }
640
+ ],
641
+ "internalType": "struct TokenMarket.Amounts",
642
+ "name": "group",
643
+ "type": "tuple"
617
644
  }
618
645
  ],
619
646
  "stateMutability": "view",
@@ -744,6 +771,16 @@
744
771
  "internalType": "uint256",
745
772
  "name": "holdMax",
746
773
  "type": "uint256"
774
+ },
775
+ {
776
+ "internalType": "uint256",
777
+ "name": "outMin",
778
+ "type": "uint256"
779
+ },
780
+ {
781
+ "internalType": "uint256",
782
+ "name": "inMin",
783
+ "type": "uint256"
747
784
  }
748
785
  ],
749
786
  "stateMutability": "view",
@@ -994,6 +1031,16 @@
994
1031
  "internalType": "uint256",
995
1032
  "name": "holdMax",
996
1033
  "type": "uint256"
1034
+ },
1035
+ {
1036
+ "internalType": "uint256",
1037
+ "name": "outMin",
1038
+ "type": "uint256"
1039
+ },
1040
+ {
1041
+ "internalType": "uint256",
1042
+ "name": "inMin",
1043
+ "type": "uint256"
997
1044
  }
998
1045
  ],
999
1046
  "internalType": "struct TokenMarket.Limit",
@@ -1433,6 +1480,16 @@
1433
1480
  "internalType": "uint256",
1434
1481
  "name": "holdMax",
1435
1482
  "type": "uint256"
1483
+ },
1484
+ {
1485
+ "internalType": "uint256",
1486
+ "name": "outMin",
1487
+ "type": "uint256"
1488
+ },
1489
+ {
1490
+ "internalType": "uint256",
1491
+ "name": "inMin",
1492
+ "type": "uint256"
1436
1493
  }
1437
1494
  ],
1438
1495
  "internalType": "struct TokenMarket.Limit",
@@ -1527,8 +1584,8 @@
1527
1584
  "type": "receive"
1528
1585
  }
1529
1586
  ],
1530
- "bytecode": "0x608060405262015180600a556000600b556305f5e1006010553480156200002557600080fd5b5060405162005ffc38038062005ffc8339810160408190526200004891620006b1565b62000053336200028d565b60018055600280546001600160a01b0319166001600160a01b0384161790556200007d81620002dd565b4660610362000285576040805160608082018352678ac7230489e80000808352766867a5a867f103b2fffa5a71fba0e7b68000000000000060208085018290527e05a8e89d75252446eb5d5d5b1cc5edf20a1a059e10ca000000000000000000948601859052600d92909255600e55600f92909255825161018081018452600181526298968081840181905273a13114c5f14bcc797e164383309ba4b06f101f2282860181905262b71b0083850181905260b460808086019190915260a0850184905260c085019390935260e084015262e4e1c0610100840152624c4b4061012084015260006101408401819052620f423f1961016085015286519283018752808352948201859052948101939093527375929c42e385661469f563b5ecfe52ae72505e47918301829052909291620001bb918491849190620003e7565b620002828183604051806101800160405280336001600160a01b03168152602001621e84808152602001856001600160a01b031681526020016000815260200160b48152602001621e848081526020016302faf08081526020016000815260200160008152602001624c4b408152602001624c4b3f19815260200160008152506040518060800160405280336001600160a01b0316815260200163017d7840815260200163017d78408152602001876001600160a01b0316815250620003e760201b60201c565b50505b50506200070e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116620003445760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b60648201526084015b60405180910390fd5b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200039e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c49190620006e9565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314620004435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200033b565b6000826060015112156200049a5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d2030000000000000000060448201526064016200033b565b600082602001511215620004f15760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d20300000000000000060448201526064016200033b565b836001600160a01b031681606001516001600160a01b031614806200052b5750826001600160a01b031681606001516001600160a01b0316145b620005795760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e670000000060448201526064016200033b565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b166001600160a01b031991821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b80516001600160a01b0381168114620006ac57600080fd5b919050565b60008060408385031215620006c557600080fd5b620006d08362000694565b9150620006e06020840162000694565b90509250929050565b600060208284031215620006fc57600080fd5b620007078262000694565b9392505050565b6158de806200071e6000396000f3fe6080604052600436106102065760003560e01c806362a76603116101175780639bad44e8116100a5578063d96661ef1161006c578063d96661ef1461082b578063eed8386c1461084b578063f2fde38b14610888578063f9848650146108a8578063fe8691b4146108c857005b80639bad44e8146107a2578063a6a3694a146107c2578063aa5d448f146107d5578063b1801986146107f5578063d738eba11461080b57005b8063744cfdd9116100e9578063744cfdd9146106a25780637aaa9b02146106c257806381f3fdc3146106e25780638da5cb5b146107115780639065a9af1461072f57005b806362a766031461061c578063643941151461064d5780636f151a381461066d578063715018a61461068d57005b806327af9e38116101945780633fc8cef3116101665780633fc8cef31461055857806340216a831461057857806343d726d6146105c65780635c818121146105dc5780635ff530f2146105fc57005b806327af9e38146103de5780632926e5de146103f45780632bd2c18d146104ed57806334e3f92d1461050d57005b80630fcc40c4116101d85780630fcc40c41461031957806315aa8953146103465780631b153401146103665780631f8c24de14610386578063238ac933146103a657005b8063016eb8a81461020f578063089afeae14610242578063092e469f146102c95780630d83b1e41461030357005b3661020d57005b005b34801561021b57600080fd5b5061022f61022a36600461494d565b61091c565b6040519081526020015b60405180910390f35b34801561024e57600080fd5b5061029a61025d366004614994565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b03958616815260208101949094528301919091529091166060820152608001610239565b3480156102d557600080fd5b50600d54600e54600f546102e892919083565b60408051938452602084019290925290820152606001610239565b34801561030f57600080fd5b5061022f60105481565b34801561032557600080fd5b50610339610334366004614ad3565b61093d565b6040516102399190614b4b565b34801561035257600080fd5b5061022f610361366004614b5e565b610a0c565b34801561037257600080fd5b5061020d610381366004614bbf565b610a21565b34801561039257600080fd5b5061020d6103a1366004614c6f565b610aa9565b3480156103b257600080fd5b506002546103c6906001600160a01b031681565b6040516001600160a01b039091168152602001610239565b3480156103ea57600080fd5b5061022f600a5481565b34801561040057600080fd5b5061048361040f366004614994565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e085015261010084015261012083015261014082015261016081019190915261018001610239565b3480156104f957600080fd5b5061022f610508366004614cdb565b610b29565b34801561051957600080fd5b50610548610528366004614d31565b805160208183018101805160038252928201919093012091525460ff1681565b6040519015158152602001610239565b34801561056457600080fd5b506004546103c6906001600160a01b031681565b34801561058457600080fd5b50610598610593366004614994565b610b7e565b604080519384526020808501939093528151848201529181015160608401520151608082015260a001610239565b3480156105d257600080fd5b5061022f600c5481565b3480156105e857600080fd5b5061022f6105f7366004614d73565b610d14565b34801561060857600080fd5b5061022f610617366004614dac565b610d5c565b34801561062857600080fd5b5061063c610637366004614df2565b610e79565b604051610239959493929190614f03565b34801561065957600080fd5b5061020d610668366004614f38565b610ed3565b34801561067957600080fd5b5061020d610688366004614f93565b610f13565b34801561069957600080fd5b5061020d610f49565b3480156106ae57600080fd5b5061022f6106bd366004614dac565b610f7f565b3480156106ce57600080fd5b5061020d6106dd366004615028565b611081565b3480156106ee57600080fd5b506107026106fd366004614b5e565b6112f5565b60405161023993929190615125565b34801561071d57600080fd5b506000546001600160a01b03166103c6565b34801561073b57600080fd5b5061078261074a366004614bbf565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610239565b3480156107ae57600080fd5b5061020d6107bd3660046151a2565b61163e565b61020d6107d036600461524e565b611800565b3480156107e157600080fd5b5061020d6107f0366004614f93565b611b10565b34801561080157600080fd5b5061022f600b5481565b34801561081757600080fd5b5061020d61082636600461494d565b611b43565b34801561083757600080fd5b506005546103c6906001600160a01b031681565b34801561085757600080fd5b5061086b610866366004614994565b611b78565b604080519283526001600160a01b03909116602083015201610239565b34801561089457600080fd5b5061020d6108a3366004614f93565b611d07565b3480156108b457600080fd5b5061086b6108c33660046152b2565b611d9f565b3480156108d457600080fd5b506109076108e3366004614994565b60066020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610239565b601054600090610936906109308585611ee2565b90611ef4565b9392505050565b80516060906000816001600160401b0381111561095c5761095c6149cd565b604051908082528060200260200182016040528015610985578160200160208202803683370190505b5090506000825b60018110610a0257856109a060018361533c565b815181106109b0576109b0615353565b60200260200101518383815181106109ca576109ca615353565b6001600160a01b0390921660209283029190910190910152816109ec81615369565b92505080806109fa90615382565b91505061098c565b5090949350505050565b6000610a19848484611f00565b949350505050565b6000546001600160a01b03163314610a545760405162461bcd60e51b8152600401610a4b90615399565b60405180910390fd5b610a5f8383836120dd565b610aa45760405162461bcd60e51b8152602060048201526016602482015275151bdad95b93585c9ad95d0e8e9cd95b990819985a5b60521b6044820152606401610a4b565b505050565b610ab1612114565b610abe858585858561216d565b610aca85858584612328565b814210610b195760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e0000006044820152606401610a4b565b610b2260018055565b5050505050565b60008080848103610b5657610b3e8787610d5c565b9150610b4c84836000610d14565b9150819250610b74565b610b608787610f7f565b9050610b6e84826001610d14565b90508092505b5050949350505050565b600080610ba560405180606001604052806000815260200160008152602001600081525090565b6000600a54600b5442610bb891906153ce565b610bc291906153e6565b6001600160a01b0380881660008181526007602081815260408084208c87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610ca7578060200151945080606001519350610ce5565b6001600160a01b038781166000908152600960209081526040808320938a168352928152828220858352905220600281015460039091015490955093505b505060408051606081018252600d548152600e546020820152600f549181019190915292959194509192509050565b600060018215610d3257601054610d2b9086612397565b9050610d42565b601054610d3f90866123a3565b90505b601054610d53906109308684611ee2565b95945050505050565b60055460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90610d939087908790600401615408565b600060405180830381865afa158015610db0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dd89190810190615421565b905080610df0600183516123a390919063ffffffff16565b81518110610e0057610e00615353565b6020026020010151915060008211610e725760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201526e02067726561746572207468616e203608c1b6064820152608401610a4b565b5092915050565b610e816148da565b600080600080600080610e968c8c8c8c6123af565b92995090945092509050610eac8c8c8b86612515565b9850610ebc8c8c8b8b868661255f565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610a4b90615399565b8051600d556020810151600e5560400151600f55565b6000546001600160a01b03163314610f3d5760405162461bcd60e51b8152600401610a4b90615399565b610f46816127e3565b50565b6000546001600160a01b03163314610f735760405162461bcd60e51b8152600401610a4b90615399565b610f7d6000612867565b565b6005546040516307c0329d60e21b815260009182916001600160a01b0390911690631f00ca7490610fb69087908790600401615408565b600060405180830381865afa158015610fd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffb9190810190615421565b90508060008151811061101057611010615353565b6020026020010151915060008211610e725760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201526d067726561746572207468616e20360941b6064820152608401610a4b565b6000546001600160a01b031633146110ab5760405162461bcd60e51b8152600401610a4b90615399565b6000826060015112156111005760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d203000000000000000006044820152606401610a4b565b6000826020015112156111555760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d2030000000000000006044820152606401610a4b565b836001600160a01b031681606001516001600160a01b0316148061118e5750826001600160a01b031681606001516001600160a01b0316145b6111da5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e67000000006044820152606401610a4b565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b166001600160a01b031991821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b6112fd6148da565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b0154610160870152805163313ce56760e01b8152905193948594909363313ce5679383820193909291908290030181865afa1580156113e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140491906154b1565b60ff16915061141d61141783600a6155b8565b85610d5c565b9050600080828560800151111561146f576101208501516080860151601054611446868361533c565b61145091906155c4565b61145a91906153e6565b61146491906153e6565b9050600091506114b8565b84608001518311156114b8576101208501516080860151601054611493828761533c565b61149d91906155c4565b6114a791906153e6565b6114b191906153e6565b9050600191505b60008113156116335760808501839052610140850151610160860151836114f0576114e2826155e3565b91506114ed816155e3565b90505b6000821261153357602087015161150784846155ff565b6115119190615684565b6020880181905260c0880151121561152e5760c087015160208801525b61158f565b86602001518760a0015184611547856128b7565b61155191906155ff565b61155b9190615684565b13156115705760a0870151602088015261158f565b602087015161157f84846155ff565b6115899190615684565b60208801525b600081126115d45760608701516115a684836155ff565b6115b09190615684565b6060880181905261010088015112156115cf5761010087015160608801525b611630565b86606001518760e00151846115e8846128b7565b6115f291906155ff565b6115fc9190615684565b13156116115760e08701516060880152611630565b606087015161162084836155ff565b61162a9190615684565b60608801525b50505b505093509350939050565b6000546001600160a01b031633146116685760405162461bcd60e51b8152600401610a4b90615399565b82518451146116895760405162461bcd60e51b8152600401610a4b906156c5565b81518351146116aa5760405162461bcd60e51b8152600401610a4b906156c5565b80518251146116cb5760405162461bcd60e51b8152600401610a4b906156c5565b60005b8451811015610b225761172d8382815181106116ec576116ec615353565b602002602001015185838151811061170657611706615353565b602002602001015184848151811061172057611720615353565b60200260200101516128d3565b7fd854fbf5db341a7d003a14ee8ed089e806c8731c6aca5fb4b89095d0a230ccd085828151811061176057611760615353565b602002602001015185838151811061177a5761177a615353565b602002602001015185848151811061179457611794615353565b60200260200101518585815181106117ae576117ae615353565b60200260200101516040516117e694939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a1806117f881615369565b9150506116ce565b611808612114565b3332146118575760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c657200000000006044820152606401610a4b565b333b156118b25760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e74726163742063604482015263616c6c7360e01b6064820152608401610a4b565b826000036118d9576118c48587610d5c565b93506118d281856000610d14565b93506118f4565b6118e38487610f7f565b94506118f181866001610d14565b94505b60008660008151811061190957611909615353565b6020026020010151905060008760018951611924919061533c565b8151811061193457611934615353565b6020908102919091018101513360009081526006835260408082206001600160a01b03871683529093529182206001018054919350899290916119789084906153ce565b9091555061198a905082828a8a6129fd565b600060405180604001604052806119a085612be9565b8152602001846001600160a01b03168152509050600060405180604001604052806119ca85612be9565b81526001600160a01b03851660209091015282519091506003036119f9576119f48433308c612c22565b611a57565b883414611a575760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201526563757261746560d01b6064820152608401610a4b565b611a6682828b8b8e8c8c612d54565b6000611a7385858b612f98565b9050600080611a8487878f8e613141565b91509150611a9387878f61342a565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a150505050505050611b0860018055565b505050505050565b6000546001600160a01b03163314611b3a5760405162461bcd60e51b8152600401610a4b90615399565b610f46816136fb565b6000546001600160a01b03163314611b6d5760405162461bcd60e51b8152600401610a4b90615399565b600a91909155600b55565b6000806000600a54600b5442611b8e91906153ce565b611b9891906153e6565b6001600160a01b0380871660008181526009602081815260408084208b871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015611ca75750600c54155b15611cb85780608001519450611cd0565b8151600003611ccb57600c549450611cd0565b815194505b505050506001600160a01b039283166000908152600860209081526040808320948616835293905291909120600301549092911690565b6000546001600160a01b03163314611d315760405162461bcd60e51b8152600401610a4b90615399565b6001600160a01b038116611d965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4b565b610f4681612867565b6001600160a01b038085166000908152600860209081526040808320878516845290915281206003015490911681611dd8878787611f00565b90506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e91906154b1565b6040516370a0823160e01b81526001600160a01b03878116600483015260ff9290921692506000918916906370a0823190602401602060405180830381865afa158015611e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb391906156fc565b9050611ec082600a6155b8565b611eca84836155c4565b611ed491906153e6565b945050505094509492505050565b600061093682846155c4565b92915050565b600061093682846153e6565b6001600160a01b038084166000818152600860209081526040808320878616845282528083208151608081018352815487168152600182015493810193909352600281015491830191909152600301549093166060840181905290929183919003611fea57846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc791906154b1565b60ff169050611fe3611fda82600a6155b8565b6106178661093d565b92506120d4565b81606001516001600160a01b0316856001600160a01b03160361207c57856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612045573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206991906154b1565b60ff169050611fe361141782600a6155b8565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e2063604482015266757272656e637960c81b6064820152608401610a4b565b50509392505050565b60006001600160a01b0384166120ff576120f783836137fc565b506001610936565b61210a8484846128d3565b5060019392505050565b6002600154036121665760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a4b565b6002600155565b60038160405161217d9190615745565b9081526040519081900360200190205460ff16156121dd5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a636572746966696361746520657870697265646044820152606401610a4b565b60408051466020808301919091528183018890526bffffffffffffffffffffffff1933606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e88401526101048084019190915283518084039091018152610124909201909252805191012060009061228e9083613915565b6002549091506001600160a01b038083169116146122ee5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c69642063657274696669636174656044820152606401610a4b565b60016003836040516123009190615745565b908152604051908190036020019020805491151560ff19909216919091179055505050505050565b6001600160a01b0383166123455761234033836137fc565b612350565b6123508333846128d3565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d33858585428660405161238996959493929190615761565b60405180910390a150505050565b600061093682846153ce565b6000610936828461533c565b6123b76148da565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b0154610160870152805163313ce56760e01b81529051939485948594919363313ce5679380840193919291908290030181865afa15801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c091906154b1565b60ff1691506124d96124d383600a6155b8565b87610d5c565b90506000806124e88a8a610b7e565b5060208801829052606088018190529092509050612506878361091c565b94505050945094509450949050565b6001600160a01b038085166000908152600860209081526040808320938716835292905290812060020154610d539061254f90859061091c565b61255985856123a3565b906123a3565b6001600160a01b0386811660009081526008602090815260408083208985168085529083528184208251608081018452815487168152600180830154828701526002830154828601526003909201548716606082015295891685526006845282852091855292528220908101549054919283928392116125ee576125e788826020015161091c565b93506127ca565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054612625908a906153ce565b1061267a576001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546125e79190612666908b906153ce565b612670919061533c565b826020015161091c565b600061268787600a6155b8565b6040516370a0823160e01b81526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa1580156126d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f491906156fc565b6126fe91906155c4565b61270891906153e6565b6001600160a01b038981166000908152600660209081526040808320938f1683529290522060018101549054919250908290612745908c906153ce565b61274f91906153ce565b10156127c8576001600160a01b038089166000908152600660209081526040808320938e16835292905220548190612788908b906153ce565b61279291906153ce565b6001600160a01b03808a166000908152600660209081526040808320938f16835292905220600101546127c5919061533c565b93505b505b6127d488856123a3565b91505096509650969350505050565b6001600160a01b0381166128455760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e67206164646044820152637265737360e01b6064820152608401610a4b565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808212156128cf576128ca826155e3565b611eee565b5090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161292f9190615745565b6000604051808303816000865af19150503d806000811461296c576040519150601f19603f3d011682016040523d82523d6000602084013e612971565b606091505b509150915081801561299b57508051158061299b57508080602001905181019061299b91906157c3565b610b225760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b6064820152608401610a4b565b6001600160a01b03808516600081815260086020908152604080832088861684528252918290208251608081018452815486168152600182015492810192909252600281015492820192909252600390910154909216606083018190529003610b22576000612a6c8686610b7e565b925050506000612a7e87878733611d9f565b5090508382600001511115612afb5760405162461bcd60e51b815260206004820152603860248201527f546f6b656e4d61726b65743a3a4c657373207468616e20746865207175616e7460448201527f697479206f6620612073696e676c6520707572636861736500000000000000006064820152608401610a4b565b8382602001511015612b755760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d61726b65743a3a47726561746572207468616e2074686520717560448201527f616e74697479206f6620612073696e676c6520707572636861736500000000006064820152608401610a4b565b612b7f84826153ce565b82604001511015612be05760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d61726b65743a3a457863656564696e6720706f736974696f6e206044820152641b1a5b5a5d60da1b6064820152608401610a4b565b50505050505050565b600060036001600160a01b038316612c0357506001611eee565b6004546001600160a01b0390811690841603611eee5750600292915050565b600080856001600160a01b03166323b872dd868686604051602401612c49939291906157e0565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612c829190615745565b6000604051808303816000865af19150503d8060008114612cbf576040519150601f19603f3d011682016040523d82523d6000602084013e612cc4565b606091505b5091509150818015612cee575080511580612cee575080806020019051810190612cee91906157c3565b611b085760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b6064820152608401610a4b565b8651600303612d79576020870151600554612d7991906001600160a01b031687613939565b86516003148015612d8b575085516003145b8015612d95575081155b15612e1f576005546040516338ed173960e01b81526001600160a01b03909116906338ed173990612dd29088908890889030908890600401615804565b6000604051808303816000875af1158015612df1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e199190810190615421565b50612be0565b86516003148015612e31575085516003145b8015612e3d5750816001145b15612e7a57600554604051634401edf760e11b81526001600160a01b0390911690638803dbee90612dd29087908990889030908890600401615804565b86516003148015612e975750855160021480612e97575085516001145b8015612ea35750816001145b15612ee057600554604051632512eca560e11b81526001600160a01b0390911690634a25d94a90612dd29087908990889030908890600401615804565b865160021480612ef1575086516001145b8015612efe575085516003145b8015612f0a5750816001145b15612be05760055460405163fb3bdb4160e01b81526001600160a01b039091169063fb3bdb41908790612f47908890889030908890600401615840565b60006040518083038185885af1158015612f65573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612f8e9190810190615421565b5050505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b90920154610160830152908161304f8686610b7e565b5050905061305d848261091c565b92506000604051806040016040528061307588612be9565b81526001600160a01b038816602090910152805190915060030361311a5782516001600160a01b03163014613115576130b3868460000151866128d3565b82516001600160a01b031615806130d4575082516001600160a01b03166001145b15613115577fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b945333878660405161310c939291906157e0565b60405180910390a15b613137565b82516001600160a01b031630146131375782516131379085613a61565b5050509392505050565b6001600160a01b03808516600090815260086020908152604080832087851684528252808320815160808101835281548616815260018201549381019390935260028101549183019190915260030154909216606083015290819081806131aa89898989613b3b565b3360009081526006602090815260408083206001600160a01b038f1684529091529020600181015490549399509194509250116131f6576131ef86846020015161091c565b9450613318565b3360009081526006602090815260408083206001600160a01b038c16845290915290206001810154905461322b9088906153ce565b1061327e573360009081526006602090815260408083206001600160a01b038c1684529091529020600181015490546131ef919061326a9089906153ce565b613274919061533c565b846020015161091c565b600061328b82600a6155b8565b6040516370a0823160e01b815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa1580156132d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f591906156fc565b6132ff91906155c4565b61330991906153e6565b9050613316898883613ef8565b505b61332286866123a3565b935084156133d957613339888460000151876128d3565b8483602001516010548761334d91906155c4565b61335791906153e6565b613361919061533c565b3360009081526006602090815260408083206001600160a01b038d168452909152812060010180549091906133979084906153ce565b90915550506040517f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e906133d09033908b9089906157e0565b60405180910390a15b6133e48833866128d3565b3360009081526006602090815260408083206001600160a01b038c168452909152812080548692906134179084906153ce565b9250508190555050505094509492505050565b6000600a54600b544261343d91906153ce565b61344791906153e6565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b90910154610160820152815192935090911580156135565750600c54155b156135b6576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b855282528084209690965595519382528552838120918152908452828120878252909352912055613610565b815160000361361057600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b600061361d878787611f00565b6001600160a01b038089166000908152600960209081526040808320938b1683529281528282208883529052205490915061365b8888848489614061565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b03811661375c5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b6064820152608401610a4b565b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156137b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d99190615875565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b8047101561384c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a4b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613899576040519150601f19603f3d011682016040523d82523d6000602084013e61389e565b606091505b5050905080610aa45760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610a4b565b600080600061392485856142d8565b915091506139318161431d565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916139959190615745565b6000604051808303816000865af19150503d80600081146139d2576040519150601f19603f3d011682016040523d82523d6000602084013e6139d7565b606091505b5091509150818015613a01575080511580613a01575080806020019051810190613a0191906157c3565b610b225760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201526a1c9bdd994819985a5b195960aa1b6064820152608401610a4b565b604080516000808252602082019092526001600160a01b038416908390604051613a8b9190615745565b60006040518083038185875af1925050503d8060008114613ac8576040519150601f19603f3d011682016040523d82523d6000602084013e613acd565b606091505b5050905080610aa45760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b6064820152608401610a4b565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b9092015461016083015290819081908180613bf78a8a610b7e565b5091509150613c06878261091c565b60408085015190516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c7491906156fc565b1015613cd95760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201526d696369656e742042616c616e636560901b6064820152608401610a4b565b6000613ce5888361091c565b1115613d4c57613d03836040015133613cfe8a8561091c565b6128d3565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd338460400151613d348a8561091c565b604051613d43939291906157e0565b60405180910390a15b6001600160a01b03808b1660009081526008602090815260408083208d8516845282528083208151608081018352815486168152600182015493810193909352600281015491830182905260030154909316606082015291613daf908a9061091c565b1115613e41576000613dd6613dc88a846040015161091c565b613dd18c61093d565b614467565b90507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f6099338c613e098c866040015161091c565b604080516001600160a01b0394851681529284166020840152820152908e1660608201526080810183905260a00160405180910390a1505b8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea391906154b1565b60ff169450613ebc613eb686600a6155b8565b8a610d5c565b95506000613eca898561091c565b9050613ee7613edd8a846040015161091c565b6125598b846123a3565b975050505050509450945094915050565b3360009081526006602090815260408083206001600160a01b03871684529091529020600181015490548290613f2f9085906153ce565b613f3991906153ce565b1015610aa4573360009081526006602090815260408083206001600160a01b03871684529091528120548290613f709085906153ce565b613f7a91906153ce565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613fab919061533c565b90508015613fec573360009081526006602090815260408083206001600160a01b038816845290915281208054839290613fe69084906153ce565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a001612389565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b90930154610160820152909182919061415f5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e20300000006044820152606401610a4b565b600085116141a75760405162461bcd60e51b81526020600482015260156024820152740546f6b656e4d61726b65743a3a6f70656e203e203605c1b6044820152606401610a4b565b858511156141ed5761012081015160105486906141c4898361533c565b6141ce91906155c4565b6141d891906153e6565b6141e291906153e6565b92506000915061422f565b8486111561422f57610120810151601054869061420a828a61533c565b61421491906155c4565b61421e91906153e6565b61422891906153e6565b9250600191505b60008061423e8a8a8787614557565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b8352905220600281018390556003018190559092509050614289898b8787614557565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b600080825160410361430e5760208301516040840151606085015160001a61430287828585614819565b94509450505050614316565b506000905060025b9250929050565b600081600481111561433157614331615892565b036143395750565b600181600481111561434d5761434d615892565b0361439a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a4b565b60028160048111156143ae576143ae615892565b036143fb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a4b565b600381600481111561440f5761440f615892565b03610f465760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610a4b565b6000808260008151811061447d5761447d615353565b6020026020010151905060008360018551614498919061533c565b815181106144a8576144a8615353565b60200260200101519050600060405180604001604052806144c885612be9565b8152602001846001600160a01b03168152509050600060405180604001604052806144f285612be9565b8152602001846001600160a01b031681525090506145108787610d5c565b9450614520612710866000610d14565b9450600061452f42600a6153ce565b905061454183838a898b600087612d54565b61454c8433886128d3565b505050505092915050565b60008060008413156147dd576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b90910154846145af576145a1826155e3565b91506145ac816155e3565b90505b60006145ba836128b7565b1315614665576145ca86836155ff565b935060008212614635576001600160a01b038089166000908152600760209081526040808320938b1683529290522060060154841315614630576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b614691565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101549350614691565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b600061469c826128b7565b13156147aa576001600160a01b038089166000908152600760209081526040808320938b16835292905220600301546146d587836155ff565b6146df9190615684565b92506000811261474a576001600160a01b038089166000908152600760209081526040808320938b1683529290522060080154831315614745576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b6147d6565b6001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154831215614745576001600160a01b038089166000908152600760208181526040808420948c168452939052919020015492506147d6565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b5050614810565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148505750600090506003614810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156148a4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166148cd57600060019250925050614810565b9660009650945050505050565b60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000806040838503121561496057600080fd5b50508035926020909101359150565b6001600160a01b0381168114610f4657600080fd5b803561498f8161496f565b919050565b600080604083850312156149a757600080fd5b82356149b28161496f565b915060208301356149c28161496f565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614a0657614a066149cd565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614a3457614a346149cd565b604052919050565b60006001600160401b03821115614a5557614a556149cd565b5060051b60200190565b600082601f830112614a7057600080fd5b81356020614a85614a8083614a3c565b614a0c565b82815260059290921b84018101918181019086841115614aa457600080fd5b8286015b84811015614ac8578035614abb8161496f565b8352918301918301614aa8565b509695505050505050565b600060208284031215614ae557600080fd5b81356001600160401b03811115614afb57600080fd5b610a1984828501614a5f565b600081518084526020808501945080840160005b83811015614b405781516001600160a01b031687529582019590820190600101614b1b565b509495945050505050565b6020815260006109366020830184614b07565b600080600060608486031215614b7357600080fd5b8335614b7e8161496f565b92506020840135614b8e8161496f565b915060408401356001600160401b03811115614ba957600080fd5b614bb586828701614a5f565b9150509250925092565b600080600060608486031215614bd457600080fd5b8335614bdf8161496f565b92506020840135614bef8161496f565b929592945050506040919091013590565b600082601f830112614c1157600080fd5b81356001600160401b03811115614c2a57614c2a6149cd565b614c3d601f8201601f1916602001614a0c565b818152846020838601011115614c5257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614c8757600080fd5b853594506020860135614c998161496f565b9350604086013592506060860135915060808601356001600160401b03811115614cc257600080fd5b614cce88828901614c00565b9150509295509295909350565b60008060008060808587031215614cf157600080fd5b8435935060208501356001600160401b03811115614d0e57600080fd5b614d1a87828801614a5f565b949794965050505060408301359260600135919050565b600060208284031215614d4357600080fd5b81356001600160401b03811115614d5957600080fd5b610a1984828501614c00565b8015158114610f4657600080fd5b600080600060608486031215614d8857600080fd5b83359250602084013591506040840135614da181614d65565b809150509250925092565b60008060408385031215614dbf57600080fd5b8235915060208301356001600160401b03811115614ddc57600080fd5b614de885828601614a5f565b9150509250929050565b600080600080600060a08688031215614e0a57600080fd5b8535614e158161496f565b94506020860135614e258161496f565b935060408601356001600160401b03811115614e4057600080fd5b614e4c88828901614a5f565b935050606086013591506080860135614e648161496f565b809150509295509295909350565b80516001600160a01b03168252602081015160208301526040810151614ea360408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b6102008101614f128288614e72565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b600060608284031215614f4a57600080fd5b604051606081018181106001600160401b0382111715614f6c57614f6c6149cd565b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060208284031215614fa557600080fd5b81356109368161496f565b600060808284031215614fc257600080fd5b604051608081018181106001600160401b0382111715614fe457614fe46149cd565b6040529050808235614ff58161496f565b808252506020830135602082015260408301356040820152606083013561501b8161496f565b6060919091015292915050565b60008060008084860361024081121561504057600080fd5b853561504b8161496f565b9450602086013561505b8161496f565b9350610180603f19820181131561507157600080fd5b6150796149e3565b915061508760408801614984565b82526060870135602083015261509f60808801614984565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a08801358184015250508092505061511a866101c08701614fb0565b905092959194509250565b6101c081016151348286614e72565b6101808201939093526101a00152919050565b600082601f83011261515857600080fd5b81356020615168614a8083614a3c565b82815260059290921b8401810191818101908684111561518757600080fd5b8286015b84811015614ac8578035835291830191830161518b565b600080600080608085870312156151b857600080fd5b84356001600160401b03808211156151cf57600080fd5b6151db88838901615147565b955060208701359150808211156151f157600080fd5b6151fd88838901614a5f565b9450604087013591508082111561521357600080fd5b61521f88838901614a5f565b9350606087013591508082111561523557600080fd5b5061524287828801615147565b91505092959194509250565b60008060008060008060c0878903121561526757600080fd5b86356001600160401b0381111561527d57600080fd5b61528989828a01614a5f565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b600080600080608085870312156152c857600080fd5b84356152d38161496f565b935060208501356152e38161496f565b925060408501356001600160401b038111156152fe57600080fd5b61530a87828801614a5f565b925050606085013561531b8161496f565b939692955090935050565b634e487b7160e01b600052601160045260246000fd5b60008282101561534e5761534e615326565b500390565b634e487b7160e01b600052603260045260246000fd5b60006001820161537b5761537b615326565b5060010190565b60008161539157615391615326565b506000190190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082198211156153e1576153e1615326565b500190565b60008261540357634e487b7160e01b600052601260045260246000fd5b500490565b828152604060208201526000610a196040830184614b07565b6000602080838503121561543457600080fd5b82516001600160401b0381111561544a57600080fd5b8301601f8101851361545b57600080fd5b8051615469614a8082614a3c565b81815260059190911b8201830190838101908783111561548857600080fd5b928401925b828410156154a65783518252928401929084019061548d565b979650505050505050565b6000602082840312156154c357600080fd5b815160ff8116811461093657600080fd5b600181815b8085111561550f5781600019048211156154f5576154f5615326565b8085161561550257918102915b93841c93908002906154d9565b509250929050565b60008261552657506001611eee565b8161553357506000611eee565b816001811461554957600281146155535761556f565b6001915050611eee565b60ff84111561556457615564615326565b50506001821b611eee565b5060208310610133831016604e8410600b8410161715615592575081810a611eee565b61559c83836154d4565b80600019048211156155b0576155b0615326565b029392505050565b60006109368383615517565b60008160001904831182151516156155de576155de615326565b500290565b6000600160ff1b82016155f8576155f8615326565b5060000390565b60006001600160ff1b038184138284138082168684048611161561562557615625615326565b600160ff1b600087128281168783058912161561564457615644615326565b6000871292508782058712848416161561566057615660615326565b8785058712818416161561567657615676615326565b505050929093029392505050565b600080821280156001600160ff1b03849003851316156156a6576156a6615326565b600160ff1b83900384128116156156bf576156bf615326565b50500190565b60208082526017908201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604082015260600190565b60006020828403121561570e57600080fd5b5051919050565b60005b83811015615730578181015183820152602001615718565b8381111561573f576000848401525b50505050565b60008251615757818460208701615715565b9190910192915050565b600060018060a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c08401526157aa8160e0850160208701615715565b601f01601f19169190910160e001979650505050505050565b6000602082840312156157d557600080fd5b815161093681614d65565b6001600160a01b039384168152919092166020820152604081019190915260600190565b85815284602082015260a06040820152600061582360a0830186614b07565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006158596080830186614b07565b6001600160a01b03949094166040830152506060015292915050565b60006020828403121561588757600080fd5b81516109368161496f565b634e487b7160e01b600052602160045260246000fdfea26469706673582212208dca4f26e9a1b229fd53d083c4a475d3df74071056cf6c5e539e205c884de7a764736f6c634300080e0033",
1531
- "deployedBytecode": "0x6080604052600436106102065760003560e01c806362a76603116101175780639bad44e8116100a5578063d96661ef1161006c578063d96661ef1461082b578063eed8386c1461084b578063f2fde38b14610888578063f9848650146108a8578063fe8691b4146108c857005b80639bad44e8146107a2578063a6a3694a146107c2578063aa5d448f146107d5578063b1801986146107f5578063d738eba11461080b57005b8063744cfdd9116100e9578063744cfdd9146106a25780637aaa9b02146106c257806381f3fdc3146106e25780638da5cb5b146107115780639065a9af1461072f57005b806362a766031461061c578063643941151461064d5780636f151a381461066d578063715018a61461068d57005b806327af9e38116101945780633fc8cef3116101665780633fc8cef31461055857806340216a831461057857806343d726d6146105c65780635c818121146105dc5780635ff530f2146105fc57005b806327af9e38146103de5780632926e5de146103f45780632bd2c18d146104ed57806334e3f92d1461050d57005b80630fcc40c4116101d85780630fcc40c41461031957806315aa8953146103465780631b153401146103665780631f8c24de14610386578063238ac933146103a657005b8063016eb8a81461020f578063089afeae14610242578063092e469f146102c95780630d83b1e41461030357005b3661020d57005b005b34801561021b57600080fd5b5061022f61022a36600461494d565b61091c565b6040519081526020015b60405180910390f35b34801561024e57600080fd5b5061029a61025d366004614994565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b03958616815260208101949094528301919091529091166060820152608001610239565b3480156102d557600080fd5b50600d54600e54600f546102e892919083565b60408051938452602084019290925290820152606001610239565b34801561030f57600080fd5b5061022f60105481565b34801561032557600080fd5b50610339610334366004614ad3565b61093d565b6040516102399190614b4b565b34801561035257600080fd5b5061022f610361366004614b5e565b610a0c565b34801561037257600080fd5b5061020d610381366004614bbf565b610a21565b34801561039257600080fd5b5061020d6103a1366004614c6f565b610aa9565b3480156103b257600080fd5b506002546103c6906001600160a01b031681565b6040516001600160a01b039091168152602001610239565b3480156103ea57600080fd5b5061022f600a5481565b34801561040057600080fd5b5061048361040f366004614994565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e085015261010084015261012083015261014082015261016081019190915261018001610239565b3480156104f957600080fd5b5061022f610508366004614cdb565b610b29565b34801561051957600080fd5b50610548610528366004614d31565b805160208183018101805160038252928201919093012091525460ff1681565b6040519015158152602001610239565b34801561056457600080fd5b506004546103c6906001600160a01b031681565b34801561058457600080fd5b50610598610593366004614994565b610b7e565b604080519384526020808501939093528151848201529181015160608401520151608082015260a001610239565b3480156105d257600080fd5b5061022f600c5481565b3480156105e857600080fd5b5061022f6105f7366004614d73565b610d14565b34801561060857600080fd5b5061022f610617366004614dac565b610d5c565b34801561062857600080fd5b5061063c610637366004614df2565b610e79565b604051610239959493929190614f03565b34801561065957600080fd5b5061020d610668366004614f38565b610ed3565b34801561067957600080fd5b5061020d610688366004614f93565b610f13565b34801561069957600080fd5b5061020d610f49565b3480156106ae57600080fd5b5061022f6106bd366004614dac565b610f7f565b3480156106ce57600080fd5b5061020d6106dd366004615028565b611081565b3480156106ee57600080fd5b506107026106fd366004614b5e565b6112f5565b60405161023993929190615125565b34801561071d57600080fd5b506000546001600160a01b03166103c6565b34801561073b57600080fd5b5061078261074a366004614bbf565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610239565b3480156107ae57600080fd5b5061020d6107bd3660046151a2565b61163e565b61020d6107d036600461524e565b611800565b3480156107e157600080fd5b5061020d6107f0366004614f93565b611b10565b34801561080157600080fd5b5061022f600b5481565b34801561081757600080fd5b5061020d61082636600461494d565b611b43565b34801561083757600080fd5b506005546103c6906001600160a01b031681565b34801561085757600080fd5b5061086b610866366004614994565b611b78565b604080519283526001600160a01b03909116602083015201610239565b34801561089457600080fd5b5061020d6108a3366004614f93565b611d07565b3480156108b457600080fd5b5061086b6108c33660046152b2565b611d9f565b3480156108d457600080fd5b506109076108e3366004614994565b60066020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610239565b601054600090610936906109308585611ee2565b90611ef4565b9392505050565b80516060906000816001600160401b0381111561095c5761095c6149cd565b604051908082528060200260200182016040528015610985578160200160208202803683370190505b5090506000825b60018110610a0257856109a060018361533c565b815181106109b0576109b0615353565b60200260200101518383815181106109ca576109ca615353565b6001600160a01b0390921660209283029190910190910152816109ec81615369565b92505080806109fa90615382565b91505061098c565b5090949350505050565b6000610a19848484611f00565b949350505050565b6000546001600160a01b03163314610a545760405162461bcd60e51b8152600401610a4b90615399565b60405180910390fd5b610a5f8383836120dd565b610aa45760405162461bcd60e51b8152602060048201526016602482015275151bdad95b93585c9ad95d0e8e9cd95b990819985a5b60521b6044820152606401610a4b565b505050565b610ab1612114565b610abe858585858561216d565b610aca85858584612328565b814210610b195760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e0000006044820152606401610a4b565b610b2260018055565b5050505050565b60008080848103610b5657610b3e8787610d5c565b9150610b4c84836000610d14565b9150819250610b74565b610b608787610f7f565b9050610b6e84826001610d14565b90508092505b5050949350505050565b600080610ba560405180606001604052806000815260200160008152602001600081525090565b6000600a54600b5442610bb891906153ce565b610bc291906153e6565b6001600160a01b0380881660008181526007602081815260408084208c87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610ca7578060200151945080606001519350610ce5565b6001600160a01b038781166000908152600960209081526040808320938a168352928152828220858352905220600281015460039091015490955093505b505060408051606081018252600d548152600e546020820152600f549181019190915292959194509192509050565b600060018215610d3257601054610d2b9086612397565b9050610d42565b601054610d3f90866123a3565b90505b601054610d53906109308684611ee2565b95945050505050565b60055460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90610d939087908790600401615408565b600060405180830381865afa158015610db0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dd89190810190615421565b905080610df0600183516123a390919063ffffffff16565b81518110610e0057610e00615353565b6020026020010151915060008211610e725760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201526e02067726561746572207468616e203608c1b6064820152608401610a4b565b5092915050565b610e816148da565b600080600080600080610e968c8c8c8c6123af565b92995090945092509050610eac8c8c8b86612515565b9850610ebc8c8c8b8b868661255f565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610a4b90615399565b8051600d556020810151600e5560400151600f55565b6000546001600160a01b03163314610f3d5760405162461bcd60e51b8152600401610a4b90615399565b610f46816127e3565b50565b6000546001600160a01b03163314610f735760405162461bcd60e51b8152600401610a4b90615399565b610f7d6000612867565b565b6005546040516307c0329d60e21b815260009182916001600160a01b0390911690631f00ca7490610fb69087908790600401615408565b600060405180830381865afa158015610fd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ffb9190810190615421565b90508060008151811061101057611010615353565b6020026020010151915060008211610e725760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201526d067726561746572207468616e20360941b6064820152608401610a4b565b6000546001600160a01b031633146110ab5760405162461bcd60e51b8152600401610a4b90615399565b6000826060015112156111005760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d203000000000000000006044820152606401610a4b565b6000826020015112156111555760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d2030000000000000006044820152606401610a4b565b836001600160a01b031681606001516001600160a01b0316148061118e5750826001600160a01b031681606001516001600160a01b0316145b6111da5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e67000000006044820152606401610a4b565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b166001600160a01b031991821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b6112fd6148da565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b0154610160870152805163313ce56760e01b8152905193948594909363313ce5679383820193909291908290030181865afa1580156113e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140491906154b1565b60ff16915061141d61141783600a6155b8565b85610d5c565b9050600080828560800151111561146f576101208501516080860151601054611446868361533c565b61145091906155c4565b61145a91906153e6565b61146491906153e6565b9050600091506114b8565b84608001518311156114b8576101208501516080860151601054611493828761533c565b61149d91906155c4565b6114a791906153e6565b6114b191906153e6565b9050600191505b60008113156116335760808501839052610140850151610160860151836114f0576114e2826155e3565b91506114ed816155e3565b90505b6000821261153357602087015161150784846155ff565b6115119190615684565b6020880181905260c0880151121561152e5760c087015160208801525b61158f565b86602001518760a0015184611547856128b7565b61155191906155ff565b61155b9190615684565b13156115705760a0870151602088015261158f565b602087015161157f84846155ff565b6115899190615684565b60208801525b600081126115d45760608701516115a684836155ff565b6115b09190615684565b6060880181905261010088015112156115cf5761010087015160608801525b611630565b86606001518760e00151846115e8846128b7565b6115f291906155ff565b6115fc9190615684565b13156116115760e08701516060880152611630565b606087015161162084836155ff565b61162a9190615684565b60608801525b50505b505093509350939050565b6000546001600160a01b031633146116685760405162461bcd60e51b8152600401610a4b90615399565b82518451146116895760405162461bcd60e51b8152600401610a4b906156c5565b81518351146116aa5760405162461bcd60e51b8152600401610a4b906156c5565b80518251146116cb5760405162461bcd60e51b8152600401610a4b906156c5565b60005b8451811015610b225761172d8382815181106116ec576116ec615353565b602002602001015185838151811061170657611706615353565b602002602001015184848151811061172057611720615353565b60200260200101516128d3565b7fd854fbf5db341a7d003a14ee8ed089e806c8731c6aca5fb4b89095d0a230ccd085828151811061176057611760615353565b602002602001015185838151811061177a5761177a615353565b602002602001015185848151811061179457611794615353565b60200260200101518585815181106117ae576117ae615353565b60200260200101516040516117e694939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a1806117f881615369565b9150506116ce565b611808612114565b3332146118575760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c657200000000006044820152606401610a4b565b333b156118b25760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e74726163742063604482015263616c6c7360e01b6064820152608401610a4b565b826000036118d9576118c48587610d5c565b93506118d281856000610d14565b93506118f4565b6118e38487610f7f565b94506118f181866001610d14565b94505b60008660008151811061190957611909615353565b6020026020010151905060008760018951611924919061533c565b8151811061193457611934615353565b6020908102919091018101513360009081526006835260408082206001600160a01b03871683529093529182206001018054919350899290916119789084906153ce565b9091555061198a905082828a8a6129fd565b600060405180604001604052806119a085612be9565b8152602001846001600160a01b03168152509050600060405180604001604052806119ca85612be9565b81526001600160a01b03851660209091015282519091506003036119f9576119f48433308c612c22565b611a57565b883414611a575760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201526563757261746560d01b6064820152608401610a4b565b611a6682828b8b8e8c8c612d54565b6000611a7385858b612f98565b9050600080611a8487878f8e613141565b91509150611a9387878f61342a565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a150505050505050611b0860018055565b505050505050565b6000546001600160a01b03163314611b3a5760405162461bcd60e51b8152600401610a4b90615399565b610f46816136fb565b6000546001600160a01b03163314611b6d5760405162461bcd60e51b8152600401610a4b90615399565b600a91909155600b55565b6000806000600a54600b5442611b8e91906153ce565b611b9891906153e6565b6001600160a01b0380871660008181526009602081815260408084208b871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015611ca75750600c54155b15611cb85780608001519450611cd0565b8151600003611ccb57600c549450611cd0565b815194505b505050506001600160a01b039283166000908152600860209081526040808320948616835293905291909120600301549092911690565b6000546001600160a01b03163314611d315760405162461bcd60e51b8152600401610a4b90615399565b6001600160a01b038116611d965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4b565b610f4681612867565b6001600160a01b038085166000908152600860209081526040808320878516845290915281206003015490911681611dd8878787611f00565b90506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e91906154b1565b6040516370a0823160e01b81526001600160a01b03878116600483015260ff9290921692506000918916906370a0823190602401602060405180830381865afa158015611e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb391906156fc565b9050611ec082600a6155b8565b611eca84836155c4565b611ed491906153e6565b945050505094509492505050565b600061093682846155c4565b92915050565b600061093682846153e6565b6001600160a01b038084166000818152600860209081526040808320878616845282528083208151608081018352815487168152600182015493810193909352600281015491830191909152600301549093166060840181905290929183919003611fea57846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc791906154b1565b60ff169050611fe3611fda82600a6155b8565b6106178661093d565b92506120d4565b81606001516001600160a01b0316856001600160a01b03160361207c57856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612045573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206991906154b1565b60ff169050611fe361141782600a6155b8565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e2063604482015266757272656e637960c81b6064820152608401610a4b565b50509392505050565b60006001600160a01b0384166120ff576120f783836137fc565b506001610936565b61210a8484846128d3565b5060019392505050565b6002600154036121665760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a4b565b6002600155565b60038160405161217d9190615745565b9081526040519081900360200190205460ff16156121dd5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a636572746966696361746520657870697265646044820152606401610a4b565b60408051466020808301919091528183018890526bffffffffffffffffffffffff1933606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e88401526101048084019190915283518084039091018152610124909201909252805191012060009061228e9083613915565b6002549091506001600160a01b038083169116146122ee5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c69642063657274696669636174656044820152606401610a4b565b60016003836040516123009190615745565b908152604051908190036020019020805491151560ff19909216919091179055505050505050565b6001600160a01b0383166123455761234033836137fc565b612350565b6123508333846128d3565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d33858585428660405161238996959493929190615761565b60405180910390a150505050565b600061093682846153ce565b6000610936828461533c565b6123b76148da565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b0154610160870152805163313ce56760e01b81529051939485948594919363313ce5679380840193919291908290030181865afa15801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c091906154b1565b60ff1691506124d96124d383600a6155b8565b87610d5c565b90506000806124e88a8a610b7e565b5060208801829052606088018190529092509050612506878361091c565b94505050945094509450949050565b6001600160a01b038085166000908152600860209081526040808320938716835292905290812060020154610d539061254f90859061091c565b61255985856123a3565b906123a3565b6001600160a01b0386811660009081526008602090815260408083208985168085529083528184208251608081018452815487168152600180830154828701526002830154828601526003909201548716606082015295891685526006845282852091855292528220908101549054919283928392116125ee576125e788826020015161091c565b93506127ca565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054612625908a906153ce565b1061267a576001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546125e79190612666908b906153ce565b612670919061533c565b826020015161091c565b600061268787600a6155b8565b6040516370a0823160e01b81526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa1580156126d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f491906156fc565b6126fe91906155c4565b61270891906153e6565b6001600160a01b038981166000908152600660209081526040808320938f1683529290522060018101549054919250908290612745908c906153ce565b61274f91906153ce565b10156127c8576001600160a01b038089166000908152600660209081526040808320938e16835292905220548190612788908b906153ce565b61279291906153ce565b6001600160a01b03808a166000908152600660209081526040808320938f16835292905220600101546127c5919061533c565b93505b505b6127d488856123a3565b91505096509650969350505050565b6001600160a01b0381166128455760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e67206164646044820152637265737360e01b6064820152608401610a4b565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808212156128cf576128ca826155e3565b611eee565b5090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161292f9190615745565b6000604051808303816000865af19150503d806000811461296c576040519150601f19603f3d011682016040523d82523d6000602084013e612971565b606091505b509150915081801561299b57508051158061299b57508080602001905181019061299b91906157c3565b610b225760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b6064820152608401610a4b565b6001600160a01b03808516600081815260086020908152604080832088861684528252918290208251608081018452815486168152600182015492810192909252600281015492820192909252600390910154909216606083018190529003610b22576000612a6c8686610b7e565b925050506000612a7e87878733611d9f565b5090508382600001511115612afb5760405162461bcd60e51b815260206004820152603860248201527f546f6b656e4d61726b65743a3a4c657373207468616e20746865207175616e7460448201527f697479206f6620612073696e676c6520707572636861736500000000000000006064820152608401610a4b565b8382602001511015612b755760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d61726b65743a3a47726561746572207468616e2074686520717560448201527f616e74697479206f6620612073696e676c6520707572636861736500000000006064820152608401610a4b565b612b7f84826153ce565b82604001511015612be05760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d61726b65743a3a457863656564696e6720706f736974696f6e206044820152641b1a5b5a5d60da1b6064820152608401610a4b565b50505050505050565b600060036001600160a01b038316612c0357506001611eee565b6004546001600160a01b0390811690841603611eee5750600292915050565b600080856001600160a01b03166323b872dd868686604051602401612c49939291906157e0565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612c829190615745565b6000604051808303816000865af19150503d8060008114612cbf576040519150601f19603f3d011682016040523d82523d6000602084013e612cc4565b606091505b5091509150818015612cee575080511580612cee575080806020019051810190612cee91906157c3565b611b085760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b6064820152608401610a4b565b8651600303612d79576020870151600554612d7991906001600160a01b031687613939565b86516003148015612d8b575085516003145b8015612d95575081155b15612e1f576005546040516338ed173960e01b81526001600160a01b03909116906338ed173990612dd29088908890889030908890600401615804565b6000604051808303816000875af1158015612df1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e199190810190615421565b50612be0565b86516003148015612e31575085516003145b8015612e3d5750816001145b15612e7a57600554604051634401edf760e11b81526001600160a01b0390911690638803dbee90612dd29087908990889030908890600401615804565b86516003148015612e975750855160021480612e97575085516001145b8015612ea35750816001145b15612ee057600554604051632512eca560e11b81526001600160a01b0390911690634a25d94a90612dd29087908990889030908890600401615804565b865160021480612ef1575086516001145b8015612efe575085516003145b8015612f0a5750816001145b15612be05760055460405163fb3bdb4160e01b81526001600160a01b039091169063fb3bdb41908790612f47908890889030908890600401615840565b60006040518083038185885af1158015612f65573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612f8e9190810190615421565b5050505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b90920154610160830152908161304f8686610b7e565b5050905061305d848261091c565b92506000604051806040016040528061307588612be9565b81526001600160a01b038816602090910152805190915060030361311a5782516001600160a01b03163014613115576130b3868460000151866128d3565b82516001600160a01b031615806130d4575082516001600160a01b03166001145b15613115577fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b945333878660405161310c939291906157e0565b60405180910390a15b613137565b82516001600160a01b031630146131375782516131379085613a61565b5050509392505050565b6001600160a01b03808516600090815260086020908152604080832087851684528252808320815160808101835281548616815260018201549381019390935260028101549183019190915260030154909216606083015290819081806131aa89898989613b3b565b3360009081526006602090815260408083206001600160a01b038f1684529091529020600181015490549399509194509250116131f6576131ef86846020015161091c565b9450613318565b3360009081526006602090815260408083206001600160a01b038c16845290915290206001810154905461322b9088906153ce565b1061327e573360009081526006602090815260408083206001600160a01b038c1684529091529020600181015490546131ef919061326a9089906153ce565b613274919061533c565b846020015161091c565b600061328b82600a6155b8565b6040516370a0823160e01b815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa1580156132d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f591906156fc565b6132ff91906155c4565b61330991906153e6565b9050613316898883613ef8565b505b61332286866123a3565b935084156133d957613339888460000151876128d3565b8483602001516010548761334d91906155c4565b61335791906153e6565b613361919061533c565b3360009081526006602090815260408083206001600160a01b038d168452909152812060010180549091906133979084906153ce565b90915550506040517f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e906133d09033908b9089906157e0565b60405180910390a15b6133e48833866128d3565b3360009081526006602090815260408083206001600160a01b038c168452909152812080548692906134179084906153ce565b9250508190555050505094509492505050565b6000600a54600b544261343d91906153ce565b61344791906153e6565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b90910154610160820152815192935090911580156135565750600c54155b156135b6576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b855282528084209690965595519382528552838120918152908452828120878252909352912055613610565b815160000361361057600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b600061361d878787611f00565b6001600160a01b038089166000908152600960209081526040808320938b1683529281528282208883529052205490915061365b8888848489614061565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b03811661375c5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b6064820152608401610a4b565b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156137b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d99190615875565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b8047101561384c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a4b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613899576040519150601f19603f3d011682016040523d82523d6000602084013e61389e565b606091505b5050905080610aa45760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610a4b565b600080600061392485856142d8565b915091506139318161431d565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916139959190615745565b6000604051808303816000865af19150503d80600081146139d2576040519150601f19603f3d011682016040523d82523d6000602084013e6139d7565b606091505b5091509150818015613a01575080511580613a01575080806020019051810190613a0191906157c3565b610b225760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201526a1c9bdd994819985a5b195960aa1b6064820152608401610a4b565b604080516000808252602082019092526001600160a01b038416908390604051613a8b9190615745565b60006040518083038185875af1925050503d8060008114613ac8576040519150601f19603f3d011682016040523d82523d6000602084013e613acd565b606091505b5050905080610aa45760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b6064820152608401610a4b565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b9092015461016083015290819081908180613bf78a8a610b7e565b5091509150613c06878261091c565b60408085015190516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c7491906156fc565b1015613cd95760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201526d696369656e742042616c616e636560901b6064820152608401610a4b565b6000613ce5888361091c565b1115613d4c57613d03836040015133613cfe8a8561091c565b6128d3565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd338460400151613d348a8561091c565b604051613d43939291906157e0565b60405180910390a15b6001600160a01b03808b1660009081526008602090815260408083208d8516845282528083208151608081018352815486168152600182015493810193909352600281015491830182905260030154909316606082015291613daf908a9061091c565b1115613e41576000613dd6613dc88a846040015161091c565b613dd18c61093d565b614467565b90507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f6099338c613e098c866040015161091c565b604080516001600160a01b0394851681529284166020840152820152908e1660608201526080810183905260a00160405180910390a1505b8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea391906154b1565b60ff169450613ebc613eb686600a6155b8565b8a610d5c565b95506000613eca898561091c565b9050613ee7613edd8a846040015161091c565b6125598b846123a3565b975050505050509450945094915050565b3360009081526006602090815260408083206001600160a01b03871684529091529020600181015490548290613f2f9085906153ce565b613f3991906153ce565b1015610aa4573360009081526006602090815260408083206001600160a01b03871684529091528120548290613f709085906153ce565b613f7a91906153ce565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613fab919061533c565b90508015613fec573360009081526006602090815260408083206001600160a01b038816845290915281208054839290613fe69084906153ce565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a001612389565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b90930154610160820152909182919061415f5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e20300000006044820152606401610a4b565b600085116141a75760405162461bcd60e51b81526020600482015260156024820152740546f6b656e4d61726b65743a3a6f70656e203e203605c1b6044820152606401610a4b565b858511156141ed5761012081015160105486906141c4898361533c565b6141ce91906155c4565b6141d891906153e6565b6141e291906153e6565b92506000915061422f565b8486111561422f57610120810151601054869061420a828a61533c565b61421491906155c4565b61421e91906153e6565b61422891906153e6565b9250600191505b60008061423e8a8a8787614557565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b8352905220600281018390556003018190559092509050614289898b8787614557565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b600080825160410361430e5760208301516040840151606085015160001a61430287828585614819565b94509450505050614316565b506000905060025b9250929050565b600081600481111561433157614331615892565b036143395750565b600181600481111561434d5761434d615892565b0361439a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a4b565b60028160048111156143ae576143ae615892565b036143fb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a4b565b600381600481111561440f5761440f615892565b03610f465760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610a4b565b6000808260008151811061447d5761447d615353565b6020026020010151905060008360018551614498919061533c565b815181106144a8576144a8615353565b60200260200101519050600060405180604001604052806144c885612be9565b8152602001846001600160a01b03168152509050600060405180604001604052806144f285612be9565b8152602001846001600160a01b031681525090506145108787610d5c565b9450614520612710866000610d14565b9450600061452f42600a6153ce565b905061454183838a898b600087612d54565b61454c8433886128d3565b505050505092915050565b60008060008413156147dd576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b90910154846145af576145a1826155e3565b91506145ac816155e3565b90505b60006145ba836128b7565b1315614665576145ca86836155ff565b935060008212614635576001600160a01b038089166000908152600760209081526040808320938b1683529290522060060154841315614630576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b614691565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101549350614691565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b600061469c826128b7565b13156147aa576001600160a01b038089166000908152600760209081526040808320938b16835292905220600301546146d587836155ff565b6146df9190615684565b92506000811261474a576001600160a01b038089166000908152600760209081526040808320938b1683529290522060080154831315614745576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b6147d6565b6001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154831215614745576001600160a01b038089166000908152600760208181526040808420948c168452939052919020015492506147d6565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b5050614810565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148505750600090506003614810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156148a4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166148cd57600060019250925050614810565b9660009650945050505050565b60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000806040838503121561496057600080fd5b50508035926020909101359150565b6001600160a01b0381168114610f4657600080fd5b803561498f8161496f565b919050565b600080604083850312156149a757600080fd5b82356149b28161496f565b915060208301356149c28161496f565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614a0657614a066149cd565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614a3457614a346149cd565b604052919050565b60006001600160401b03821115614a5557614a556149cd565b5060051b60200190565b600082601f830112614a7057600080fd5b81356020614a85614a8083614a3c565b614a0c565b82815260059290921b84018101918181019086841115614aa457600080fd5b8286015b84811015614ac8578035614abb8161496f565b8352918301918301614aa8565b509695505050505050565b600060208284031215614ae557600080fd5b81356001600160401b03811115614afb57600080fd5b610a1984828501614a5f565b600081518084526020808501945080840160005b83811015614b405781516001600160a01b031687529582019590820190600101614b1b565b509495945050505050565b6020815260006109366020830184614b07565b600080600060608486031215614b7357600080fd5b8335614b7e8161496f565b92506020840135614b8e8161496f565b915060408401356001600160401b03811115614ba957600080fd5b614bb586828701614a5f565b9150509250925092565b600080600060608486031215614bd457600080fd5b8335614bdf8161496f565b92506020840135614bef8161496f565b929592945050506040919091013590565b600082601f830112614c1157600080fd5b81356001600160401b03811115614c2a57614c2a6149cd565b614c3d601f8201601f1916602001614a0c565b818152846020838601011115614c5257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614c8757600080fd5b853594506020860135614c998161496f565b9350604086013592506060860135915060808601356001600160401b03811115614cc257600080fd5b614cce88828901614c00565b9150509295509295909350565b60008060008060808587031215614cf157600080fd5b8435935060208501356001600160401b03811115614d0e57600080fd5b614d1a87828801614a5f565b949794965050505060408301359260600135919050565b600060208284031215614d4357600080fd5b81356001600160401b03811115614d5957600080fd5b610a1984828501614c00565b8015158114610f4657600080fd5b600080600060608486031215614d8857600080fd5b83359250602084013591506040840135614da181614d65565b809150509250925092565b60008060408385031215614dbf57600080fd5b8235915060208301356001600160401b03811115614ddc57600080fd5b614de885828601614a5f565b9150509250929050565b600080600080600060a08688031215614e0a57600080fd5b8535614e158161496f565b94506020860135614e258161496f565b935060408601356001600160401b03811115614e4057600080fd5b614e4c88828901614a5f565b935050606086013591506080860135614e648161496f565b809150509295509295909350565b80516001600160a01b03168252602081015160208301526040810151614ea360408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b6102008101614f128288614e72565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b600060608284031215614f4a57600080fd5b604051606081018181106001600160401b0382111715614f6c57614f6c6149cd565b80604052508235815260208301356020820152604083013560408201528091505092915050565b600060208284031215614fa557600080fd5b81356109368161496f565b600060808284031215614fc257600080fd5b604051608081018181106001600160401b0382111715614fe457614fe46149cd565b6040529050808235614ff58161496f565b808252506020830135602082015260408301356040820152606083013561501b8161496f565b6060919091015292915050565b60008060008084860361024081121561504057600080fd5b853561504b8161496f565b9450602086013561505b8161496f565b9350610180603f19820181131561507157600080fd5b6150796149e3565b915061508760408801614984565b82526060870135602083015261509f60808801614984565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a08801358184015250508092505061511a866101c08701614fb0565b905092959194509250565b6101c081016151348286614e72565b6101808201939093526101a00152919050565b600082601f83011261515857600080fd5b81356020615168614a8083614a3c565b82815260059290921b8401810191818101908684111561518757600080fd5b8286015b84811015614ac8578035835291830191830161518b565b600080600080608085870312156151b857600080fd5b84356001600160401b03808211156151cf57600080fd5b6151db88838901615147565b955060208701359150808211156151f157600080fd5b6151fd88838901614a5f565b9450604087013591508082111561521357600080fd5b61521f88838901614a5f565b9350606087013591508082111561523557600080fd5b5061524287828801615147565b91505092959194509250565b60008060008060008060c0878903121561526757600080fd5b86356001600160401b0381111561527d57600080fd5b61528989828a01614a5f565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b600080600080608085870312156152c857600080fd5b84356152d38161496f565b935060208501356152e38161496f565b925060408501356001600160401b038111156152fe57600080fd5b61530a87828801614a5f565b925050606085013561531b8161496f565b939692955090935050565b634e487b7160e01b600052601160045260246000fd5b60008282101561534e5761534e615326565b500390565b634e487b7160e01b600052603260045260246000fd5b60006001820161537b5761537b615326565b5060010190565b60008161539157615391615326565b506000190190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082198211156153e1576153e1615326565b500190565b60008261540357634e487b7160e01b600052601260045260246000fd5b500490565b828152604060208201526000610a196040830184614b07565b6000602080838503121561543457600080fd5b82516001600160401b0381111561544a57600080fd5b8301601f8101851361545b57600080fd5b8051615469614a8082614a3c565b81815260059190911b8201830190838101908783111561548857600080fd5b928401925b828410156154a65783518252928401929084019061548d565b979650505050505050565b6000602082840312156154c357600080fd5b815160ff8116811461093657600080fd5b600181815b8085111561550f5781600019048211156154f5576154f5615326565b8085161561550257918102915b93841c93908002906154d9565b509250929050565b60008261552657506001611eee565b8161553357506000611eee565b816001811461554957600281146155535761556f565b6001915050611eee565b60ff84111561556457615564615326565b50506001821b611eee565b5060208310610133831016604e8410600b8410161715615592575081810a611eee565b61559c83836154d4565b80600019048211156155b0576155b0615326565b029392505050565b60006109368383615517565b60008160001904831182151516156155de576155de615326565b500290565b6000600160ff1b82016155f8576155f8615326565b5060000390565b60006001600160ff1b038184138284138082168684048611161561562557615625615326565b600160ff1b600087128281168783058912161561564457615644615326565b6000871292508782058712848416161561566057615660615326565b8785058712818416161561567657615676615326565b505050929093029392505050565b600080821280156001600160ff1b03849003851316156156a6576156a6615326565b600160ff1b83900384128116156156bf576156bf615326565b50500190565b60208082526017908201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604082015260600190565b60006020828403121561570e57600080fd5b5051919050565b60005b83811015615730578181015183820152602001615718565b8381111561573f576000848401525b50505050565b60008251615757818460208701615715565b9190910192915050565b600060018060a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c08401526157aa8160e0850160208701615715565b601f01601f19169190910160e001979650505050505050565b6000602082840312156157d557600080fd5b815161093681614d65565b6001600160a01b039384168152919092166020820152604081019190915260600190565b85815284602082015260a06040820152600061582360a0830186614b07565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006158596080830186614b07565b6001600160a01b03949094166040830152506060015292915050565b60006020828403121561588757600080fd5b81516109368161496f565b634e487b7160e01b600052602160045260246000fdfea26469706673582212208dca4f26e9a1b229fd53d083c4a475d3df74071056cf6c5e539e205c884de7a764736f6c634300080e0033",
1587
+ "bytecode": "0x608060405262015180600a556000600b556305f5e1006012553480156200002557600080fd5b50604051620062f9380380620062f9833981016040819052620000489162000746565b620000533362000322565b60018055600280546001600160a01b0319166001600160a01b0384161790556200007d8162000372565b600080734683b08798f3e30220c9d2018a4715f9f9532f5c738f689b86683004e20b938c60cc547f3ba23c283346606103620000e7577375929c42e385661469f563b5ecfe52ae72505e47935073a13114c5f14bcc797e164383309ba4b06f101f2292506200015e565b466201388103620001265773cf43b390dc89b36fd49267c646a73a0dfb7f3e4c93507385217dbb899f176f2533beb32d27b0e16aa2dd9592506200015e565b466089036200015e5773c2132d05d31c914a87c6611c10748aeb04b58e8f935073d34c03815039aded697d3e8cf94a7b371628383392505b6040805160a0808201835260008083526302faf08060208085018290528486018290526298968060608087018290526080968701859052600d859055600e849055600f9390935560108190556011849055865161018081018852600181528083018290526001600160a01b03808c16828a015262b71b008286018190526005838a015296820183905260c082019290925260e081019590955262e4e1c0610100860152624c4b406101208601526101408501849052620f423f196101608601528651958601875283865290850183905294840191909152928716928201929092526200024f9186918691906200047c565b620003168385604051806101800160405280866001600160a01b03168152602001621e84808152602001876001600160a01b031681526020016000815260200160058152602001621e848081526020016302faf08081526020016000815260200160008152602001624c4b408152602001624c4b3f19815260200160008152506040518060800160405280866001600160a01b0316815260200163017d7840815260200163017d78408152602001896001600160a01b03168152506200047c60201b60201c565b505050505050620007a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116620003d95760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b60648201526084015b60405180910390fd5b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000433573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045991906200077e565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314620004d85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003d0565b6000826060015112156200052f5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d203000000000000000006044820152606401620003d0565b600082602001511215620005865760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d2030000000000000006044820152606401620003d0565b836001600160a01b031681606001516001600160a01b03161480620005c05750826001600160a01b031681606001516001600160a01b0316145b6200060e5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e67000000006044820152606401620003d0565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b166001600160a01b031991821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b80516001600160a01b03811681146200074157600080fd5b919050565b600080604083850312156200075a57600080fd5b620007658362000729565b9150620007756020840162000729565b90509250929050565b6000602082840312156200079157600080fd5b6200079c8262000729565b9392505050565b615b4680620007b36000396000f3fe6080604052600436106102065760003560e01c80635ff530f2116101175780639bad44e8116100a5578063d96661ef1161006c578063d96661ef14610857578063eed8386c14610877578063f2fde38b146108b4578063f9848650146108d4578063fe8691b4146108f457005b80639bad44e8146107ce578063a6a3694a146107ee578063aa5d448f14610801578063b180198614610821578063d738eba11461083757005b8063744cfdd9116100e9578063744cfdd9146106ce5780637aaa9b02146106ee57806381f3fdc31461070e5780638da5cb5b1461073d5780639065a9af1461075b57005b80635ff530f21461064b57806362a766031461066b5780636f151a3814610699578063715018a6146106b957005b8063238ac9331161019457806334e3f92d1161016657806334e3f92d146105425780633fc8cef31461058d57806340216a83146105ad57806343d726d6146106155780635c8181211461062b57005b8063238ac933146103db57806327af9e38146104135780632926e5de146104295780632bd2c18d1461052257005b80630d83b1e4116101d85780630d83b1e4146103385780630fcc40c41461034e57806315aa89531461037b5780631b1534011461039b5780631f8c24de146103bb57005b8063016eb8a81461020f578063089aa04714610242578063089afeae14610262578063092e469f146102e957005b3661020d57005b005b34801561021b57600080fd5b5061022f61022a366004614b69565b610948565b6040519081526020015b60405180910390f35b34801561024e57600080fd5b5061020d61025d366004614bfa565b610969565b34801561026e57600080fd5b506102ba61027d366004614c8e565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b03958616815260208101949094528301919091529091166060820152608001610239565b3480156102f557600080fd5b50600d54600e54600f54601054601154610310949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610239565b34801561034457600080fd5b5061022f60125481565b34801561035a57600080fd5b5061036e610369366004614d5e565b6109c2565b6040516102399190614dd6565b34801561038757600080fd5b5061022f610396366004614de9565b610a91565b3480156103a757600080fd5b5061020d6103b6366004614e4a565b610aa6565b3480156103c757600080fd5b5061020d6103d6366004614efa565b610b25565b3480156103e757600080fd5b506002546103fb906001600160a01b031681565b6040516001600160a01b039091168152602001610239565b34801561041f57600080fd5b5061022f600a5481565b34801561043557600080fd5b506104b8610444366004614c8e565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e085015261010084015261012083015261014082015261016081019190915261018001610239565b34801561052e57600080fd5b5061022f61053d366004614f66565b610ba5565b34801561054e57600080fd5b5061057d61055d366004614fbc565b805160208183018101805160038252928201919093012091525460ff1681565b6040519015158152602001610239565b34801561059957600080fd5b506004546103fb906001600160a01b031681565b3480156105b957600080fd5b506105cd6105c8366004614c8e565b610bfa565b6040805193845260208085019390935281518482015291810151606080850191909152918101516080808501919091529181015160a0840152015160c082015260e001610239565b34801561062157600080fd5b5061022f600c5481565b34801561063757600080fd5b5061022f610646366004614ffe565b610dae565b34801561065757600080fd5b5061022f610666366004615037565b610df6565b34801561067757600080fd5b5061068b61068636600461507d565b610f13565b60405161023992919061518e565b3480156106a557600080fd5b5061020d6106b43660046151fb565b61123f565b3480156106c557600080fd5b5061020d611275565b3480156106da57600080fd5b5061022f6106e9366004615037565b6112ab565b3480156106fa57600080fd5b5061020d610709366004615290565b6113ad565b34801561071a57600080fd5b5061072e610729366004614de9565b611621565b6040516102399392919061538d565b34801561074957600080fd5b506000546001600160a01b03166103fb565b34801561076757600080fd5b506107ae610776366004614e4a565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610239565b3480156107da57600080fd5b5061020d6107e936600461540a565b61196a565b61020d6107fc3660046154b6565b611b2c565b34801561080d57600080fd5b5061020d61081c3660046151fb565b611e3c565b34801561082d57600080fd5b5061022f600b5481565b34801561084357600080fd5b5061020d610852366004614b69565b611e6f565b34801561086357600080fd5b506005546103fb906001600160a01b031681565b34801561088357600080fd5b50610897610892366004614c8e565b611ea4565b604080519283526001600160a01b03909116602083015201610239565b3480156108c057600080fd5b5061020d6108cf3660046151fb565b612033565b3480156108e057600080fd5b506108976108ef36600461551a565b6120cb565b34801561090057600080fd5b5061093361090f366004614c8e565b60066020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610239565b6012546000906109629061095c858561220e565b90612220565b9392505050565b6000546001600160a01b0316331461099c5760405162461bcd60e51b81526004016109939061558e565b60405180910390fd5b8051600d556020810151600e556040810151600f55606081015160105560800151601155565b80516060906000816001600160401b038111156109e1576109e1614b8b565b604051908082528060200260200182016040528015610a0a578160200160208202803683370190505b5090506000825b60018110610a875785610a256001836155d9565b81518110610a3557610a356155f0565b6020026020010151838381518110610a4f57610a4f6155f0565b6001600160a01b039092166020928302919091019091015281610a7181615606565b9250508080610a7f9061561f565b915050610a11565b5090949350505050565b6000610a9e84848461222c565b949350505050565b6000546001600160a01b03163314610ad05760405162461bcd60e51b81526004016109939061558e565b610adb838383612409565b610b205760405162461bcd60e51b8152602060048201526016602482015275151bdad95b93585c9ad95d0e8e9cd95b990819985a5b60521b6044820152606401610993565b505050565b610b2d612440565b610b3a8585858585612499565b610b4685858584612654565b814210610b955760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e0000006044820152606401610993565b610b9e60018055565b5050505050565b60008080848103610bd257610bba8787610df6565b9150610bc884836000610dae565b9150819250610bf0565b610bdc87876112ab565b9050610bea84826001610dae565b90508092505b5050949350505050565b600080610c2f6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000600a54600b5442610c429190615636565b610c4c919061564e565b6001600160a01b0380881660008181526007602081815260408084208c87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610d31578060200151945080606001519350610d6f565b6001600160a01b038781166000908152600960209081526040808320938a168352928152828220858352905220600281015460039091015490955093505b50506040805160a081018252600d548152600e546020820152600f54918101919091526010546060820152601154608082015292959194509192509050565b600060018215610dcc57601254610dc590866126c3565b9050610ddc565b601254610dd990866126cf565b90505b601254610ded9061095c868461220e565b95945050505050565b60055460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90610e2d9087908790600401615670565b600060405180830381865afa158015610e4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e729190810190615689565b905080610e8a600183516126cf90919063ffffffff16565b81518110610e9a57610e9a6155f0565b6020026020010151915060008211610f0c5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201526e02067726561746572207468616e203608c1b6064820152608401610993565b5092915050565b610f1b614af6565b610f65604051806101000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081525090565b600080610f74898989896126db565b60a088019290925260808701839052929650919350909150610f979087906126cf565b95506000610fa683600a6157fd565b60a08501516040516370a0823160e01b81526001600160a01b038981166004830152859291908e16906370a0823190602401602060405180830381865afa158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190615809565b6110239190615636565b61102d9190615822565b611037919061564e565b6001600160a01b038781166000908152600660209081526040808320938e16835292905290812060018101549054929350918390611076908b90615636565b6110809190615636565b90508082106110a457600060c087015261109a81836155d9565b60e08701526110bb565b600160c08701526110b582826155d9565b60e08701525b6001600160a01b03808d1660009081526008602090815260408083208f8516808552908352928190208151608081018352815486168152600182015493810193909352600281015491830191909152600301549092166060830181905203611227578660c00151156111d45760e087015160115411801590611141575060008760e00151115b156111c757898760e001511061119c5761115f8a8260400151610948565b60408801526020810151611174908b90610948565b8088526040880151611192919061118c908d906126cf565b906126cf565b606088015261122f565b6111ae8760e001518260400151610948565b604088015260e087015160208201516111749190610948565b606087018a90525b61122f565b6111e28a8260400151610948565b604088018190526111f4908b906126cf565b606088015260e087015160105411801590611213575060008760e00151115b156111cf5760e0870151602088015261122f565b606087018a90525b5050505050509550959350505050565b6000546001600160a01b031633146112695760405162461bcd60e51b81526004016109939061558e565b61127281612853565b50565b6000546001600160a01b0316331461129f5760405162461bcd60e51b81526004016109939061558e565b6112a960006128d7565b565b6005546040516307c0329d60e21b815260009182916001600160a01b0390911690631f00ca74906112e29087908790600401615670565b600060405180830381865afa1580156112ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113279190810190615689565b90508060008151811061133c5761133c6155f0565b6020026020010151915060008211610f0c5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201526d067726561746572207468616e20360941b6064820152608401610993565b6000546001600160a01b031633146113d75760405162461bcd60e51b81526004016109939061558e565b60008260600151121561142c5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d203000000000000000006044820152606401610993565b6000826020015112156114815760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d2030000000000000006044820152606401610993565b836001600160a01b031681606001516001600160a01b031614806114ba5750826001600160a01b031681606001516001600160a01b0316145b6115065760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e67000000006044820152606401610993565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b166001600160a01b031991821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b611629614af6565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b0154610160870152805163313ce56760e01b8152905193948594909363313ce5679383820193909291908290030181865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190615841565b60ff16915061174961174383600a6157fd565b85610df6565b9050600080828560800151111561179b57610120850151608086015160125461177286836155d9565b61177c9190615822565b611786919061564e565b611790919061564e565b9050600091506117e4565b84608001518311156117e45761012085015160808601516012546117bf82876155d9565b6117c99190615822565b6117d3919061564e565b6117dd919061564e565b9050600191505b600081131561195f57608085018390526101408501516101608601518361181c5761180e82615864565b915061181981615864565b90505b6000821261185f5760208701516118338484615880565b61183d9190615905565b6020880181905260c0880151121561185a5760c087015160208801525b6118bb565b86602001518760a001518461187385612927565b61187d9190615880565b6118879190615905565b131561189c5760a087015160208801526118bb565b60208701516118ab8484615880565b6118b59190615905565b60208801525b600081126119005760608701516118d28483615880565b6118dc9190615905565b6060880181905261010088015112156118fb5761010087015160608801525b61195c565b86606001518760e001518461191484612927565b61191e9190615880565b6119289190615905565b131561193d5760e0870151606088015261195c565b606087015161194c8483615880565b6119569190615905565b60608801525b50505b505093509350939050565b6000546001600160a01b031633146119945760405162461bcd60e51b81526004016109939061558e565b82518451146119b55760405162461bcd60e51b815260040161099390615946565b81518351146119d65760405162461bcd60e51b815260040161099390615946565b80518251146119f75760405162461bcd60e51b815260040161099390615946565b60005b8451811015610b9e57611a59838281518110611a1857611a186155f0565b6020026020010151858381518110611a3257611a326155f0565b6020026020010151848481518110611a4c57611a4c6155f0565b6020026020010151612943565b7fd854fbf5db341a7d003a14ee8ed089e806c8731c6aca5fb4b89095d0a230ccd0858281518110611a8c57611a8c6155f0565b6020026020010151858381518110611aa657611aa66155f0565b6020026020010151858481518110611ac057611ac06155f0565b6020026020010151858581518110611ada57611ada6155f0565b6020026020010151604051611b1294939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a180611b2481615606565b9150506119fa565b611b34612440565b333214611b835760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c657200000000006044820152606401610993565b333b15611bde5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e74726163742063604482015263616c6c7360e01b6064820152608401610993565b82600003611c0557611bf08587610df6565b9350611bfe81856000610dae565b9350611c20565b611c0f84876112ab565b9450611c1d81866001610dae565b94505b600086600081518110611c3557611c356155f0565b6020026020010151905060008760018951611c5091906155d9565b81518110611c6057611c606155f0565b6020908102919091018101513360009081526006835260408082206001600160a01b0387168352909352918220600101805491935089929091611ca4908490615636565b90915550611cb6905082828a8a612a6d565b60006040518060400160405280611ccc85612c59565b8152602001846001600160a01b0316815250905060006040518060400160405280611cf685612c59565b81526001600160a01b0385166020909101528251909150600303611d2557611d208433308c612c92565b611d83565b883414611d835760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201526563757261746560d01b6064820152608401610993565b611d9282828b8b8e8c8c612dc4565b6000611d9f85858b613008565b9050600080611db087878f8e6131b1565b91509150611dbf87878f6132bf565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a150505050505050611e3460018055565b505050505050565b6000546001600160a01b03163314611e665760405162461bcd60e51b81526004016109939061558e565b61127281613590565b6000546001600160a01b03163314611e995760405162461bcd60e51b81526004016109939061558e565b600a91909155600b55565b6000806000600a54600b5442611eba9190615636565b611ec4919061564e565b6001600160a01b0380871660008181526009602081815260408084208b871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015611fd35750600c54155b15611fe45780608001519450611ffc565b8151600003611ff757600c549450611ffc565b815194505b505050506001600160a01b039283166000908152600860209081526040808320948616835293905291909120600301549092911690565b6000546001600160a01b0316331461205d5760405162461bcd60e51b81526004016109939061558e565b6001600160a01b0381166120c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610993565b611272816128d7565b6001600160a01b03808516600090815260086020908152604080832087851684529091528120600301549091168161210487878761222c565b90506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216a9190615841565b6040516370a0823160e01b81526001600160a01b03878116600483015260ff9290921692506000918916906370a0823190602401602060405180830381865afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190615809565b90506121ec82600a6157fd565b6121f68483615822565b612200919061564e565b945050505094509492505050565b60006109628284615822565b92915050565b6000610962828461564e565b6001600160a01b03808416600081815260086020908152604080832087861684528252808320815160808101835281548716815260018201549381019390935260028101549183019190915260030154909316606084018190529092918391900361231657846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f39190615841565b60ff16905061230f61230682600a6157fd565b610666866109c2565b9250612400565b81606001516001600160a01b0316856001600160a01b0316036123a857856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123959190615841565b60ff16905061230f61174382600a6157fd565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e2063604482015266757272656e637960c81b6064820152608401610993565b50509392505050565b60006001600160a01b03841661242b576124238383613691565b506001610962565b612436848484612943565b5060019392505050565b6002600154036124925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610993565b6002600155565b6003816040516124a991906159ad565b9081526040519081900360200190205460ff16156125095760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a636572746966696361746520657870697265646044820152606401610993565b60408051466020808301919091528183018890526bffffffffffffffffffffffff1933606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e8840152610104808401919091528351808403909101815261012490920190925280519101206000906125ba90836137aa565b6002549091506001600160a01b0380831691161461261a5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c69642063657274696669636174656044820152606401610993565b600160038360405161262c91906159ad565b908152604051908190036020019020805491151560ff19909216919091179055505050505050565b6001600160a01b0383166126715761266c3383613691565b61267c565b61267c833384612943565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d3385858542866040516126b5969594939291906159c9565b60405180910390a150505050565b60006109628284615636565b600061096282846155d9565b6126e3614af6565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b0154610160870152805163313ce56760e01b815290519394859485948594929363313ce5679381830193909290918290030181865afa1580156127ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ee9190615841565b60ff16915061280761280183600a6157fd565b88610df6565b90506000806128168b8b610bfa565b50602089018290526060890181905290925090506128348883610948565b9550612844888860600151610948565b94505050945094509450945094565b6001600160a01b0381166128b55760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e67206164646044820152637265737360e01b6064820152608401610993565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082121561293f5761293a82615864565b61221a565b5090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161299f91906159ad565b6000604051808303816000865af19150503d80600081146129dc576040519150601f19603f3d011682016040523d82523d6000602084013e6129e1565b606091505b5091509150818015612a0b575080511580612a0b575080806020019051810190612a0b9190615a2b565b610b9e5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b6064820152608401610993565b6001600160a01b03808516600081815260086020908152604080832088861684528252918290208251608081018452815486168152600182015492810192909252600281015492820192909252600390910154909216606083018190529003610b9e576000612adc8686610bfa565b925050506000612aee878787336120cb565b5090508382600001511115612b6b5760405162461bcd60e51b815260206004820152603860248201527f546f6b656e4d61726b65743a3a4c657373207468616e20746865207175616e7460448201527f697479206f6620612073696e676c6520707572636861736500000000000000006064820152608401610993565b8382602001511015612be55760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d61726b65743a3a47726561746572207468616e2074686520717560448201527f616e74697479206f6620612073696e676c6520707572636861736500000000006064820152608401610993565b612bef8482615636565b82604001511015612c505760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d61726b65743a3a457863656564696e6720706f736974696f6e206044820152641b1a5b5a5d60da1b6064820152608401610993565b50505050505050565b600060036001600160a01b038316612c735750600161221a565b6004546001600160a01b039081169084160361221a5750600292915050565b600080856001600160a01b03166323b872dd868686604051602401612cb993929190615a48565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612cf291906159ad565b6000604051808303816000865af19150503d8060008114612d2f576040519150601f19603f3d011682016040523d82523d6000602084013e612d34565b606091505b5091509150818015612d5e575080511580612d5e575080806020019051810190612d5e9190615a2b565b611e345760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b6064820152608401610993565b8651600303612de9576020870151600554612de991906001600160a01b0316876137ce565b86516003148015612dfb575085516003145b8015612e05575081155b15612e8f576005546040516338ed173960e01b81526001600160a01b03909116906338ed173990612e429088908890889030908890600401615a6c565b6000604051808303816000875af1158015612e61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e899190810190615689565b50612c50565b86516003148015612ea1575085516003145b8015612ead5750816001145b15612eea57600554604051634401edf760e11b81526001600160a01b0390911690638803dbee90612e429087908990889030908890600401615a6c565b86516003148015612f075750855160021480612f07575085516001145b8015612f135750816001145b15612f5057600554604051632512eca560e11b81526001600160a01b0390911690634a25d94a90612e429087908990889030908890600401615a6c565b865160021480612f61575086516001145b8015612f6e575085516003145b8015612f7a5750816001145b15612c505760055460405163fb3bdb4160e01b81526001600160a01b039091169063fb3bdb41908790612fb7908890889030908890600401615aa8565b60006040518083038185885af1158015612fd5573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612ffe9190810190615689565b5050505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b9092015461016083015290816130bf8686610bfa565b505090506130cd8482610948565b9250600060405180604001604052806130e588612c59565b81526001600160a01b038816602090910152805190915060030361318a5782516001600160a01b031630146131855761312386846000015186612943565b82516001600160a01b03161580613144575082516001600160a01b03166001145b15613185577fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b945333878660405161317c93929190615a48565b60405180910390a15b6131a7565b82516001600160a01b031630146131a75782516131a790856138f6565b5050509392505050565b6001600160a01b038085166000908152600860209081526040808320878516845282528083208151608081018352815486168152600182015493810193909352600281015491830191909152600301549092166060830152908190818061321a898989896139d0565b606086015190985091935091506001600160a01b03808a1691160361326a5781156132565761324c898989848a613af9565b909550935061326e565b613263898989848a613dd9565b935061326e565b8593505b613279883386612943565b3360009081526006602090815260408083206001600160a01b038c168452909152812080548692906132ac908490615636565b9250508190555050505094509492505050565b6000600a54600b54426132d29190615636565b6132dc919061564e565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b90910154610160820152815192935090911580156133eb5750600c54155b1561344b576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b8552825280842096909655955193825285528381209181529084528281208782529093529120556134a5565b81516000036134a557600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b60006134b287878761222c565b6001600160a01b038089166000908152600960209081526040808320938b168352928152828220888352905220549091506134f08888848489613fc6565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b0381166135f15760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b6064820152608401610993565b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801561364a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366e9190615add565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b804710156136e15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610993565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461372e576040519150601f19603f3d011682016040523d82523d6000602084013e613733565b606091505b5050905080610b205760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610993565b60008060006137b9858561423d565b915091506137c681614282565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b179052915160009283929087169161382a91906159ad565b6000604051808303816000865af19150503d8060008114613867576040519150601f19603f3d011682016040523d82523d6000602084013e61386c565b606091505b50915091508180156138965750805115806138965750808060200190518101906138969190615a2b565b610b9e5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201526a1c9bdd994819985a5b195960aa1b6064820152608401610993565b604080516000808252602082019092526001600160a01b03841690839060405161392091906159ad565b60006040518083038185875af1925050503d806000811461395d576040519150601f19603f3d011682016040523d82523d6000602084013e613962565b606091505b5050905080610b205760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b6064820152608401610993565b60008060008060006139e4898989896143cc565b9194509250905060006139f882600a6157fd565b6040516370a0823160e01b815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa158015613a3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a629190615809565b613a6c9190615822565b613a76919061564e565b3360009081526006602090815260408083206001600160a01b038e168452909152812060018101549054929350918390613ab1908890615636565b613abb9190615636565b9050808210613ad95760009750613ad281836155d9565b9650613aea565b60019750613ae782826155d9565b96505b50505050509450945094915050565b6001600160a01b0380861660009081526008602090815260408083208885168452825280832081516080810183528154861681526001820154938101939093526002810154918301919091526003015490921660608301526011549091829182908610801590613b695750600086115b15613dc957848610613cae57613b96613b86868460400151610948565b613b8f896109c2565b6001614682565b90507fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b9453338a83604051613bcb93929190615a48565b60405180910390a1613be1858360200151610948565b9350613bf288836000015186612943565b613c00858360400151610948565b613c0a85876155d9565b613c1491906155d9565b3360009081526006602090815260408083206001600160a01b038d16845290915281206001018054909190613c4a908490615636565b90915550506040517f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e90613c839033908b908890615a48565b60405180910390a1613ca78461118c613ca0888660400151610948565b88906126cf565b9250613dcd565b613cbf613b86878460400151610948565b90507fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b9453338a83604051613cf493929190615a48565b60405180910390a1613d0a868360200151610948565b9350613d1b88836000015186612943565b613d29868360400151610948565b613d3385886155d9565b613d3d91906155d9565b3360009081526006602090815260408083206001600160a01b038d16845290915281206001018054909190613d73908490615636565b90915550506040517f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e90613dac9033908b908890615a48565b60405180910390a1613ca78461118c613ca0898660400151610948565b8492505b50509550959350505050565b6001600160a01b0380861660009081526008602090815260408083208885168452825280832081516080810183528154861681526001820154938101939093526002810154918301829052600301549093166060820152909182908190613e41908690610948565b1115613eef57613e67613e58858460400151610948565b613e61886109c2565b33614682565b9050613e81613e7a858460400151610948565b85906126cf565b92507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f60993388613eb4878660400151610948565b604080516001600160a01b0394851681529284166020840152820152908a1660608201526080810183905260a00160405180910390a1613ef3565b8392505b6010548510801590613f055750600085115b15613fbb573360009081526006602090815260408083206001600160a01b038b16845290915281208054879290613f3d908490615636565b90915550503360008181526006602090815260408083206001600160a01b038c1680855290835292819020600181015490548251958652928501939093528301889052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a00160405180910390a15b505095945050505050565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b9093015461016082015290918291906140c45760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e20300000006044820152606401610993565b6000851161410c5760405162461bcd60e51b81526020600482015260156024820152740546f6b656e4d61726b65743a3a6f70656e203e203605c1b6044820152606401610993565b8585111561415257610120810151601254869061412989836155d9565b6141339190615822565b61413d919061564e565b614147919061564e565b925060009150614194565b8486111561419457610120810151601254869061416f828a6155d9565b6141799190615822565b614183919061564e565b61418d919061564e565b9250600191505b6000806141a38a8a8787614773565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b83529052206002810183905560030181905590925090506141ee898b8787614773565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b60008082516041036142735760208301516040840151606085015160001a61426787828585614a35565b9450945050505061427b565b506000905060025b9250929050565b600081600481111561429657614296615afa565b0361429e5750565b60018160048111156142b2576142b2615afa565b036142ff5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610993565b600281600481111561431357614313615afa565b036143605760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610993565b600381600481111561437457614374615afa565b036112725760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610993565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b90920154610160830152908190819081806144888a8a610bfa565b50915091506144978782610948565b60408085015190516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156144e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145059190615809565b101561456a5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201526d696369656e742042616c616e636560901b6064820152608401610993565b60006145768883610948565b11156145dd5761459483604001513361458f8a85610948565b612943565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd3384604001516145c58a85610948565b6040516145d493929190615a48565b60405180910390a15b896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561461b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463f9190615841565b60ff16935061465861465285600a6157fd565b89610df6565b945060006146668884610948565b905061467288826126cf565b9650505050509450945094915050565b60008083600081518110614698576146986155f0565b60200260200101519050600084600186516146b391906155d9565b815181106146c3576146c36155f0565b60200260200101519050600060405180604001604052806146e385612c59565b8152602001846001600160a01b031681525090506000604051806040016040528061470d85612c59565b8152602001846001600160a01b0316815250905061472b8888610df6565b945061473b612710866000610dae565b9450600061474a42600a615636565b905061475c83838b898c600087612dc4565b614767848888612943565b50505050509392505050565b60008060008413156149f9576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b90910154846147cb576147bd82615864565b91506147c881615864565b90505b60006147d683612927565b1315614881576147e68683615880565b935060008212614851576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015484131561484c576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b6148ad565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493506148ad565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b60006148b882612927565b13156149c6576001600160a01b038089166000908152600760209081526040808320938b16835292905220600301546148f18783615880565b6148fb9190615905565b925060008112614966576001600160a01b038089166000908152600760209081526040808320938b1683529290522060080154831315614961576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b6149f2565b6001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154831215614961576001600160a01b038089166000908152600760208181526040808420948c168452939052919020015492506149f2565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b5050614a2c565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614a6c5750600090506003614a2c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614ac0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614ae957600060019250925050614a2c565b9660009650945050505050565b60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008060408385031215614b7c57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614bc457614bc4614b8b565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614bf257614bf2614b8b565b604052919050565b600060a08284031215614c0c57600080fd5b60405160a081018181106001600160401b0382111715614c2e57614c2e614b8b565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b6001600160a01b038116811461127257600080fd5b8035614c8981614c69565b919050565b60008060408385031215614ca157600080fd5b8235614cac81614c69565b91506020830135614cbc81614c69565b809150509250929050565b60006001600160401b03821115614ce057614ce0614b8b565b5060051b60200190565b600082601f830112614cfb57600080fd5b81356020614d10614d0b83614cc7565b614bca565b82815260059290921b84018101918181019086841115614d2f57600080fd5b8286015b84811015614d53578035614d4681614c69565b8352918301918301614d33565b509695505050505050565b600060208284031215614d7057600080fd5b81356001600160401b03811115614d8657600080fd5b610a9e84828501614cea565b600081518084526020808501945080840160005b83811015614dcb5781516001600160a01b031687529582019590820190600101614da6565b509495945050505050565b6020815260006109626020830184614d92565b600080600060608486031215614dfe57600080fd5b8335614e0981614c69565b92506020840135614e1981614c69565b915060408401356001600160401b03811115614e3457600080fd5b614e4086828701614cea565b9150509250925092565b600080600060608486031215614e5f57600080fd5b8335614e6a81614c69565b92506020840135614e7a81614c69565b929592945050506040919091013590565b600082601f830112614e9c57600080fd5b81356001600160401b03811115614eb557614eb5614b8b565b614ec8601f8201601f1916602001614bca565b818152846020838601011115614edd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614f1257600080fd5b853594506020860135614f2481614c69565b9350604086013592506060860135915060808601356001600160401b03811115614f4d57600080fd5b614f5988828901614e8b565b9150509295509295909350565b60008060008060808587031215614f7c57600080fd5b8435935060208501356001600160401b03811115614f9957600080fd5b614fa587828801614cea565b949794965050505060408301359260600135919050565b600060208284031215614fce57600080fd5b81356001600160401b03811115614fe457600080fd5b610a9e84828501614e8b565b801515811461127257600080fd5b60008060006060848603121561501357600080fd5b8335925060208401359150604084013561502c81614ff0565b809150509250925092565b6000806040838503121561504a57600080fd5b8235915060208301356001600160401b0381111561506757600080fd5b61507385828601614cea565b9150509250929050565b600080600080600060a0868803121561509557600080fd5b85356150a081614c69565b945060208601356150b081614c69565b935060408601356001600160401b038111156150cb57600080fd5b6150d788828901614cea565b9350506060860135915060808601356150ef81614c69565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161512e60408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b610280810161519d82856150fd565b825161018083015260208301516101a083015260408301516101c083015260608301516101e0830152608083015161020083015260a083015161022083015260c0830151151561024083015260e08301516102608301529392505050565b60006020828403121561520d57600080fd5b813561096281614c69565b60006080828403121561522a57600080fd5b604051608081018181106001600160401b038211171561524c5761524c614b8b565b604052905080823561525d81614c69565b808252506020830135602082015260408301356040820152606083013561528381614c69565b6060919091015292915050565b6000806000808486036102408112156152a857600080fd5b85356152b381614c69565b945060208601356152c381614c69565b9350610180603f1982018113156152d957600080fd5b6152e1614ba1565b91506152ef60408801614c7e565b82526060870135602083015261530760808801614c7e565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050615382866101c08701615218565b905092959194509250565b6101c0810161539c82866150fd565b6101808201939093526101a00152919050565b600082601f8301126153c057600080fd5b813560206153d0614d0b83614cc7565b82815260059290921b840181019181810190868411156153ef57600080fd5b8286015b84811015614d5357803583529183019183016153f3565b6000806000806080858703121561542057600080fd5b84356001600160401b038082111561543757600080fd5b615443888389016153af565b9550602087013591508082111561545957600080fd5b61546588838901614cea565b9450604087013591508082111561547b57600080fd5b61548788838901614cea565b9350606087013591508082111561549d57600080fd5b506154aa878288016153af565b91505092959194509250565b60008060008060008060c087890312156154cf57600080fd5b86356001600160401b038111156154e557600080fd5b6154f189828a01614cea565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b6000806000806080858703121561553057600080fd5b843561553b81614c69565b9350602085013561554b81614c69565b925060408501356001600160401b0381111561556657600080fd5b61557287828801614cea565b925050606085013561558381614c69565b939692955090935050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156155eb576155eb6155c3565b500390565b634e487b7160e01b600052603260045260246000fd5b600060018201615618576156186155c3565b5060010190565b60008161562e5761562e6155c3565b506000190190565b60008219821115615649576156496155c3565b500190565b60008261566b57634e487b7160e01b600052601260045260246000fd5b500490565b828152604060208201526000610a9e6040830184614d92565b6000602080838503121561569c57600080fd5b82516001600160401b038111156156b257600080fd5b8301601f810185136156c357600080fd5b80516156d1614d0b82614cc7565b81815260059190911b820183019083810190878311156156f057600080fd5b928401925b8284101561570e578351825292840192908401906156f5565b979650505050505050565b600181815b8085111561575457816000190482111561573a5761573a6155c3565b8085161561574757918102915b93841c939080029061571e565b509250929050565b60008261576b5750600161221a565b816157785750600061221a565b816001811461578e5760028114615798576157b4565b600191505061221a565b60ff8411156157a9576157a96155c3565b50506001821b61221a565b5060208310610133831016604e8410600b84101617156157d7575081810a61221a565b6157e18383615719565b80600019048211156157f5576157f56155c3565b029392505050565b6000610962838361575c565b60006020828403121561581b57600080fd5b5051919050565b600081600019048311821515161561583c5761583c6155c3565b500290565b60006020828403121561585357600080fd5b815160ff8116811461096257600080fd5b6000600160ff1b8201615879576158796155c3565b5060000390565b60006001600160ff1b03818413828413808216868404861116156158a6576158a66155c3565b600160ff1b60008712828116878305891216156158c5576158c56155c3565b600087129250878205871284841616156158e1576158e16155c3565b878505871281841616156158f7576158f76155c3565b505050929093029392505050565b600080821280156001600160ff1b0384900385131615615927576159276155c3565b600160ff1b8390038412811615615940576159406155c3565b50500190565b60208082526017908201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604082015260600190565b60005b83811015615998578181015183820152602001615980565b838111156159a7576000848401525b50505050565b600082516159bf81846020870161597d565b9190910192915050565b600060018060a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c0840152615a128160e085016020870161597d565b601f01601f19169190910160e001979650505050505050565b600060208284031215615a3d57600080fd5b815161096281614ff0565b6001600160a01b039384168152919092166020820152604081019190915260600190565b85815284602082015260a060408201526000615a8b60a0830186614d92565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000615ac16080830186614d92565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215615aef57600080fd5b815161096281614c69565b634e487b7160e01b600052602160045260246000fdfea264697066735822122034006617412732b29cdc50f2fd8cc2bce97ce10ed7af8d91722370bc824d6e2164736f6c634300080e0033",
1588
+ "deployedBytecode": "0x6080604052600436106102065760003560e01c80635ff530f2116101175780639bad44e8116100a5578063d96661ef1161006c578063d96661ef14610857578063eed8386c14610877578063f2fde38b146108b4578063f9848650146108d4578063fe8691b4146108f457005b80639bad44e8146107ce578063a6a3694a146107ee578063aa5d448f14610801578063b180198614610821578063d738eba11461083757005b8063744cfdd9116100e9578063744cfdd9146106ce5780637aaa9b02146106ee57806381f3fdc31461070e5780638da5cb5b1461073d5780639065a9af1461075b57005b80635ff530f21461064b57806362a766031461066b5780636f151a3814610699578063715018a6146106b957005b8063238ac9331161019457806334e3f92d1161016657806334e3f92d146105425780633fc8cef31461058d57806340216a83146105ad57806343d726d6146106155780635c8181211461062b57005b8063238ac933146103db57806327af9e38146104135780632926e5de146104295780632bd2c18d1461052257005b80630d83b1e4116101d85780630d83b1e4146103385780630fcc40c41461034e57806315aa89531461037b5780631b1534011461039b5780631f8c24de146103bb57005b8063016eb8a81461020f578063089aa04714610242578063089afeae14610262578063092e469f146102e957005b3661020d57005b005b34801561021b57600080fd5b5061022f61022a366004614b69565b610948565b6040519081526020015b60405180910390f35b34801561024e57600080fd5b5061020d61025d366004614bfa565b610969565b34801561026e57600080fd5b506102ba61027d366004614c8e565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b03958616815260208101949094528301919091529091166060820152608001610239565b3480156102f557600080fd5b50600d54600e54600f54601054601154610310949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610239565b34801561034457600080fd5b5061022f60125481565b34801561035a57600080fd5b5061036e610369366004614d5e565b6109c2565b6040516102399190614dd6565b34801561038757600080fd5b5061022f610396366004614de9565b610a91565b3480156103a757600080fd5b5061020d6103b6366004614e4a565b610aa6565b3480156103c757600080fd5b5061020d6103d6366004614efa565b610b25565b3480156103e757600080fd5b506002546103fb906001600160a01b031681565b6040516001600160a01b039091168152602001610239565b34801561041f57600080fd5b5061022f600a5481565b34801561043557600080fd5b506104b8610444366004614c8e565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e085015261010084015261012083015261014082015261016081019190915261018001610239565b34801561052e57600080fd5b5061022f61053d366004614f66565b610ba5565b34801561054e57600080fd5b5061057d61055d366004614fbc565b805160208183018101805160038252928201919093012091525460ff1681565b6040519015158152602001610239565b34801561059957600080fd5b506004546103fb906001600160a01b031681565b3480156105b957600080fd5b506105cd6105c8366004614c8e565b610bfa565b6040805193845260208085019390935281518482015291810151606080850191909152918101516080808501919091529181015160a0840152015160c082015260e001610239565b34801561062157600080fd5b5061022f600c5481565b34801561063757600080fd5b5061022f610646366004614ffe565b610dae565b34801561065757600080fd5b5061022f610666366004615037565b610df6565b34801561067757600080fd5b5061068b61068636600461507d565b610f13565b60405161023992919061518e565b3480156106a557600080fd5b5061020d6106b43660046151fb565b61123f565b3480156106c557600080fd5b5061020d611275565b3480156106da57600080fd5b5061022f6106e9366004615037565b6112ab565b3480156106fa57600080fd5b5061020d610709366004615290565b6113ad565b34801561071a57600080fd5b5061072e610729366004614de9565b611621565b6040516102399392919061538d565b34801561074957600080fd5b506000546001600160a01b03166103fb565b34801561076757600080fd5b506107ae610776366004614e4a565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610239565b3480156107da57600080fd5b5061020d6107e936600461540a565b61196a565b61020d6107fc3660046154b6565b611b2c565b34801561080d57600080fd5b5061020d61081c3660046151fb565b611e3c565b34801561082d57600080fd5b5061022f600b5481565b34801561084357600080fd5b5061020d610852366004614b69565b611e6f565b34801561086357600080fd5b506005546103fb906001600160a01b031681565b34801561088357600080fd5b50610897610892366004614c8e565b611ea4565b604080519283526001600160a01b03909116602083015201610239565b3480156108c057600080fd5b5061020d6108cf3660046151fb565b612033565b3480156108e057600080fd5b506108976108ef36600461551a565b6120cb565b34801561090057600080fd5b5061093361090f366004614c8e565b60066020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610239565b6012546000906109629061095c858561220e565b90612220565b9392505050565b6000546001600160a01b0316331461099c5760405162461bcd60e51b81526004016109939061558e565b60405180910390fd5b8051600d556020810151600e556040810151600f55606081015160105560800151601155565b80516060906000816001600160401b038111156109e1576109e1614b8b565b604051908082528060200260200182016040528015610a0a578160200160208202803683370190505b5090506000825b60018110610a875785610a256001836155d9565b81518110610a3557610a356155f0565b6020026020010151838381518110610a4f57610a4f6155f0565b6001600160a01b039092166020928302919091019091015281610a7181615606565b9250508080610a7f9061561f565b915050610a11565b5090949350505050565b6000610a9e84848461222c565b949350505050565b6000546001600160a01b03163314610ad05760405162461bcd60e51b81526004016109939061558e565b610adb838383612409565b610b205760405162461bcd60e51b8152602060048201526016602482015275151bdad95b93585c9ad95d0e8e9cd95b990819985a5b60521b6044820152606401610993565b505050565b610b2d612440565b610b3a8585858585612499565b610b4685858584612654565b814210610b955760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e0000006044820152606401610993565b610b9e60018055565b5050505050565b60008080848103610bd257610bba8787610df6565b9150610bc884836000610dae565b9150819250610bf0565b610bdc87876112ab565b9050610bea84826001610dae565b90508092505b5050949350505050565b600080610c2f6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000600a54600b5442610c429190615636565b610c4c919061564e565b6001600160a01b0380881660008181526007602081815260408084208c87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610d31578060200151945080606001519350610d6f565b6001600160a01b038781166000908152600960209081526040808320938a168352928152828220858352905220600281015460039091015490955093505b50506040805160a081018252600d548152600e546020820152600f54918101919091526010546060820152601154608082015292959194509192509050565b600060018215610dcc57601254610dc590866126c3565b9050610ddc565b601254610dd990866126cf565b90505b601254610ded9061095c868461220e565b95945050505050565b60055460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90610e2d9087908790600401615670565b600060405180830381865afa158015610e4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e729190810190615689565b905080610e8a600183516126cf90919063ffffffff16565b81518110610e9a57610e9a6155f0565b6020026020010151915060008211610f0c5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201526e02067726561746572207468616e203608c1b6064820152608401610993565b5092915050565b610f1b614af6565b610f65604051806101000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081525090565b600080610f74898989896126db565b60a088019290925260808701839052929650919350909150610f979087906126cf565b95506000610fa683600a6157fd565b60a08501516040516370a0823160e01b81526001600160a01b038981166004830152859291908e16906370a0823190602401602060405180830381865afa158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190615809565b6110239190615636565b61102d9190615822565b611037919061564e565b6001600160a01b038781166000908152600660209081526040808320938e16835292905290812060018101549054929350918390611076908b90615636565b6110809190615636565b90508082106110a457600060c087015261109a81836155d9565b60e08701526110bb565b600160c08701526110b582826155d9565b60e08701525b6001600160a01b03808d1660009081526008602090815260408083208f8516808552908352928190208151608081018352815486168152600182015493810193909352600281015491830191909152600301549092166060830181905203611227578660c00151156111d45760e087015160115411801590611141575060008760e00151115b156111c757898760e001511061119c5761115f8a8260400151610948565b60408801526020810151611174908b90610948565b8088526040880151611192919061118c908d906126cf565b906126cf565b606088015261122f565b6111ae8760e001518260400151610948565b604088015260e087015160208201516111749190610948565b606087018a90525b61122f565b6111e28a8260400151610948565b604088018190526111f4908b906126cf565b606088015260e087015160105411801590611213575060008760e00151115b156111cf5760e0870151602088015261122f565b606087018a90525b5050505050509550959350505050565b6000546001600160a01b031633146112695760405162461bcd60e51b81526004016109939061558e565b61127281612853565b50565b6000546001600160a01b0316331461129f5760405162461bcd60e51b81526004016109939061558e565b6112a960006128d7565b565b6005546040516307c0329d60e21b815260009182916001600160a01b0390911690631f00ca74906112e29087908790600401615670565b600060405180830381865afa1580156112ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113279190810190615689565b90508060008151811061133c5761133c6155f0565b6020026020010151915060008211610f0c5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201526d067726561746572207468616e20360941b6064820152608401610993565b6000546001600160a01b031633146113d75760405162461bcd60e51b81526004016109939061558e565b60008260600151121561142c5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d203000000000000000006044820152606401610993565b6000826020015112156114815760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d2030000000000000006044820152606401610993565b836001600160a01b031681606001516001600160a01b031614806114ba5750826001600160a01b031681606001516001600160a01b0316145b6115065760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e67000000006044820152606401610993565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b166001600160a01b031991821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b611629614af6565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b0154610160870152805163313ce56760e01b8152905193948594909363313ce5679383820193909291908290030181865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190615841565b60ff16915061174961174383600a6157fd565b85610df6565b9050600080828560800151111561179b57610120850151608086015160125461177286836155d9565b61177c9190615822565b611786919061564e565b611790919061564e565b9050600091506117e4565b84608001518311156117e45761012085015160808601516012546117bf82876155d9565b6117c99190615822565b6117d3919061564e565b6117dd919061564e565b9050600191505b600081131561195f57608085018390526101408501516101608601518361181c5761180e82615864565b915061181981615864565b90505b6000821261185f5760208701516118338484615880565b61183d9190615905565b6020880181905260c0880151121561185a5760c087015160208801525b6118bb565b86602001518760a001518461187385612927565b61187d9190615880565b6118879190615905565b131561189c5760a087015160208801526118bb565b60208701516118ab8484615880565b6118b59190615905565b60208801525b600081126119005760608701516118d28483615880565b6118dc9190615905565b6060880181905261010088015112156118fb5761010087015160608801525b61195c565b86606001518760e001518461191484612927565b61191e9190615880565b6119289190615905565b131561193d5760e0870151606088015261195c565b606087015161194c8483615880565b6119569190615905565b60608801525b50505b505093509350939050565b6000546001600160a01b031633146119945760405162461bcd60e51b81526004016109939061558e565b82518451146119b55760405162461bcd60e51b815260040161099390615946565b81518351146119d65760405162461bcd60e51b815260040161099390615946565b80518251146119f75760405162461bcd60e51b815260040161099390615946565b60005b8451811015610b9e57611a59838281518110611a1857611a186155f0565b6020026020010151858381518110611a3257611a326155f0565b6020026020010151848481518110611a4c57611a4c6155f0565b6020026020010151612943565b7fd854fbf5db341a7d003a14ee8ed089e806c8731c6aca5fb4b89095d0a230ccd0858281518110611a8c57611a8c6155f0565b6020026020010151858381518110611aa657611aa66155f0565b6020026020010151858481518110611ac057611ac06155f0565b6020026020010151858581518110611ada57611ada6155f0565b6020026020010151604051611b1294939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a180611b2481615606565b9150506119fa565b611b34612440565b333214611b835760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c657200000000006044820152606401610993565b333b15611bde5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e74726163742063604482015263616c6c7360e01b6064820152608401610993565b82600003611c0557611bf08587610df6565b9350611bfe81856000610dae565b9350611c20565b611c0f84876112ab565b9450611c1d81866001610dae565b94505b600086600081518110611c3557611c356155f0565b6020026020010151905060008760018951611c5091906155d9565b81518110611c6057611c606155f0565b6020908102919091018101513360009081526006835260408082206001600160a01b0387168352909352918220600101805491935089929091611ca4908490615636565b90915550611cb6905082828a8a612a6d565b60006040518060400160405280611ccc85612c59565b8152602001846001600160a01b0316815250905060006040518060400160405280611cf685612c59565b81526001600160a01b0385166020909101528251909150600303611d2557611d208433308c612c92565b611d83565b883414611d835760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201526563757261746560d01b6064820152608401610993565b611d9282828b8b8e8c8c612dc4565b6000611d9f85858b613008565b9050600080611db087878f8e6131b1565b91509150611dbf87878f6132bf565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a150505050505050611e3460018055565b505050505050565b6000546001600160a01b03163314611e665760405162461bcd60e51b81526004016109939061558e565b61127281613590565b6000546001600160a01b03163314611e995760405162461bcd60e51b81526004016109939061558e565b600a91909155600b55565b6000806000600a54600b5442611eba9190615636565b611ec4919061564e565b6001600160a01b0380871660008181526009602081815260408084208b871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015611fd35750600c54155b15611fe45780608001519450611ffc565b8151600003611ff757600c549450611ffc565b815194505b505050506001600160a01b039283166000908152600860209081526040808320948616835293905291909120600301549092911690565b6000546001600160a01b0316331461205d5760405162461bcd60e51b81526004016109939061558e565b6001600160a01b0381166120c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610993565b611272816128d7565b6001600160a01b03808516600090815260086020908152604080832087851684529091528120600301549091168161210487878761222c565b90506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216a9190615841565b6040516370a0823160e01b81526001600160a01b03878116600483015260ff9290921692506000918916906370a0823190602401602060405180830381865afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190615809565b90506121ec82600a6157fd565b6121f68483615822565b612200919061564e565b945050505094509492505050565b60006109628284615822565b92915050565b6000610962828461564e565b6001600160a01b03808416600081815260086020908152604080832087861684528252808320815160808101835281548716815260018201549381019390935260028101549183019190915260030154909316606084018190529092918391900361231657846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f39190615841565b60ff16905061230f61230682600a6157fd565b610666866109c2565b9250612400565b81606001516001600160a01b0316856001600160a01b0316036123a857856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123959190615841565b60ff16905061230f61174382600a6157fd565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e2063604482015266757272656e637960c81b6064820152608401610993565b50509392505050565b60006001600160a01b03841661242b576124238383613691565b506001610962565b612436848484612943565b5060019392505050565b6002600154036124925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610993565b6002600155565b6003816040516124a991906159ad565b9081526040519081900360200190205460ff16156125095760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a636572746966696361746520657870697265646044820152606401610993565b60408051466020808301919091528183018890526bffffffffffffffffffffffff1933606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e8840152610104808401919091528351808403909101815261012490920190925280519101206000906125ba90836137aa565b6002549091506001600160a01b0380831691161461261a5760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c69642063657274696669636174656044820152606401610993565b600160038360405161262c91906159ad565b908152604051908190036020019020805491151560ff19909216919091179055505050505050565b6001600160a01b0383166126715761266c3383613691565b61267c565b61267c833384612943565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d3385858542866040516126b5969594939291906159c9565b60405180910390a150505050565b60006109628284615636565b600061096282846155d9565b6126e3614af6565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b0154610160870152805163313ce56760e01b815290519394859485948594929363313ce5679381830193909290918290030181865afa1580156127ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ee9190615841565b60ff16915061280761280183600a6157fd565b88610df6565b90506000806128168b8b610bfa565b50602089018290526060890181905290925090506128348883610948565b9550612844888860600151610948565b94505050945094509450945094565b6001600160a01b0381166128b55760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e67206164646044820152637265737360e01b6064820152608401610993565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082121561293f5761293a82615864565b61221a565b5090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161299f91906159ad565b6000604051808303816000865af19150503d80600081146129dc576040519150601f19603f3d011682016040523d82523d6000602084013e6129e1565b606091505b5091509150818015612a0b575080511580612a0b575080806020019051810190612a0b9190615a2b565b610b9e5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b6064820152608401610993565b6001600160a01b03808516600081815260086020908152604080832088861684528252918290208251608081018452815486168152600182015492810192909252600281015492820192909252600390910154909216606083018190529003610b9e576000612adc8686610bfa565b925050506000612aee878787336120cb565b5090508382600001511115612b6b5760405162461bcd60e51b815260206004820152603860248201527f546f6b656e4d61726b65743a3a4c657373207468616e20746865207175616e7460448201527f697479206f6620612073696e676c6520707572636861736500000000000000006064820152608401610993565b8382602001511015612be55760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e4d61726b65743a3a47726561746572207468616e2074686520717560448201527f616e74697479206f6620612073696e676c6520707572636861736500000000006064820152608401610993565b612bef8482615636565b82604001511015612c505760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4d61726b65743a3a457863656564696e6720706f736974696f6e206044820152641b1a5b5a5d60da1b6064820152608401610993565b50505050505050565b600060036001600160a01b038316612c735750600161221a565b6004546001600160a01b039081169084160361221a5750600292915050565b600080856001600160a01b03166323b872dd868686604051602401612cb993929190615a48565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612cf291906159ad565b6000604051808303816000865af19150503d8060008114612d2f576040519150601f19603f3d011682016040523d82523d6000602084013e612d34565b606091505b5091509150818015612d5e575080511580612d5e575080806020019051810190612d5e9190615a2b565b611e345760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b6064820152608401610993565b8651600303612de9576020870151600554612de991906001600160a01b0316876137ce565b86516003148015612dfb575085516003145b8015612e05575081155b15612e8f576005546040516338ed173960e01b81526001600160a01b03909116906338ed173990612e429088908890889030908890600401615a6c565b6000604051808303816000875af1158015612e61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e899190810190615689565b50612c50565b86516003148015612ea1575085516003145b8015612ead5750816001145b15612eea57600554604051634401edf760e11b81526001600160a01b0390911690638803dbee90612e429087908990889030908890600401615a6c565b86516003148015612f075750855160021480612f07575085516001145b8015612f135750816001145b15612f5057600554604051632512eca560e11b81526001600160a01b0390911690634a25d94a90612e429087908990889030908890600401615a6c565b865160021480612f61575086516001145b8015612f6e575085516003145b8015612f7a5750816001145b15612c505760055460405163fb3bdb4160e01b81526001600160a01b039091169063fb3bdb41908790612fb7908890889030908890600401615aa8565b60006040518083038185885af1158015612fd5573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612ffe9190810190615689565b5050505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b9092015461016083015290816130bf8686610bfa565b505090506130cd8482610948565b9250600060405180604001604052806130e588612c59565b81526001600160a01b038816602090910152805190915060030361318a5782516001600160a01b031630146131855761312386846000015186612943565b82516001600160a01b03161580613144575082516001600160a01b03166001145b15613185577fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b945333878660405161317c93929190615a48565b60405180910390a15b6131a7565b82516001600160a01b031630146131a75782516131a790856138f6565b5050509392505050565b6001600160a01b038085166000908152600860209081526040808320878516845282528083208151608081018352815486168152600182015493810193909352600281015491830191909152600301549092166060830152908190818061321a898989896139d0565b606086015190985091935091506001600160a01b03808a1691160361326a5781156132565761324c898989848a613af9565b909550935061326e565b613263898989848a613dd9565b935061326e565b8593505b613279883386612943565b3360009081526006602090815260408083206001600160a01b038c168452909152812080548692906132ac908490615636565b9250508190555050505094509492505050565b6000600a54600b54426132d29190615636565b6132dc919061564e565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b90910154610160820152815192935090911580156133eb5750600c54155b1561344b576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b8552825280842096909655955193825285528381209181529084528281208782529093529120556134a5565b81516000036134a557600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b60006134b287878761222c565b6001600160a01b038089166000908152600960209081526040808320938b168352928152828220888352905220549091506134f08888848489613fc6565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b0381166135f15760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b6064820152608401610993565b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801561364a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366e9190615add565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b804710156136e15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610993565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461372e576040519150601f19603f3d011682016040523d82523d6000602084013e613733565b606091505b5050905080610b205760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610993565b60008060006137b9858561423d565b915091506137c681614282565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b179052915160009283929087169161382a91906159ad565b6000604051808303816000865af19150503d8060008114613867576040519150601f19603f3d011682016040523d82523d6000602084013e61386c565b606091505b50915091508180156138965750805115806138965750808060200190518101906138969190615a2b565b610b9e5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201526a1c9bdd994819985a5b195960aa1b6064820152608401610993565b604080516000808252602082019092526001600160a01b03841690839060405161392091906159ad565b60006040518083038185875af1925050503d806000811461395d576040519150601f19603f3d011682016040523d82523d6000602084013e613962565b606091505b5050905080610b205760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b6064820152608401610993565b60008060008060006139e4898989896143cc565b9194509250905060006139f882600a6157fd565b6040516370a0823160e01b815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa158015613a3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a629190615809565b613a6c9190615822565b613a76919061564e565b3360009081526006602090815260408083206001600160a01b038e168452909152812060018101549054929350918390613ab1908890615636565b613abb9190615636565b9050808210613ad95760009750613ad281836155d9565b9650613aea565b60019750613ae782826155d9565b96505b50505050509450945094915050565b6001600160a01b0380861660009081526008602090815260408083208885168452825280832081516080810183528154861681526001820154938101939093526002810154918301919091526003015490921660608301526011549091829182908610801590613b695750600086115b15613dc957848610613cae57613b96613b86868460400151610948565b613b8f896109c2565b6001614682565b90507fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b9453338a83604051613bcb93929190615a48565b60405180910390a1613be1858360200151610948565b9350613bf288836000015186612943565b613c00858360400151610948565b613c0a85876155d9565b613c1491906155d9565b3360009081526006602090815260408083206001600160a01b038d16845290915281206001018054909190613c4a908490615636565b90915550506040517f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e90613c839033908b908890615a48565b60405180910390a1613ca78461118c613ca0888660400151610948565b88906126cf565b9250613dcd565b613cbf613b86878460400151610948565b90507fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b9453338a83604051613cf493929190615a48565b60405180910390a1613d0a868360200151610948565b9350613d1b88836000015186612943565b613d29868360400151610948565b613d3385886155d9565b613d3d91906155d9565b3360009081526006602090815260408083206001600160a01b038d16845290915281206001018054909190613d73908490615636565b90915550506040517f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e90613dac9033908b908890615a48565b60405180910390a1613ca78461118c613ca0898660400151610948565b8492505b50509550959350505050565b6001600160a01b0380861660009081526008602090815260408083208885168452825280832081516080810183528154861681526001820154938101939093526002810154918301829052600301549093166060820152909182908190613e41908690610948565b1115613eef57613e67613e58858460400151610948565b613e61886109c2565b33614682565b9050613e81613e7a858460400151610948565b85906126cf565b92507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f60993388613eb4878660400151610948565b604080516001600160a01b0394851681529284166020840152820152908a1660608201526080810183905260a00160405180910390a1613ef3565b8392505b6010548510801590613f055750600085115b15613fbb573360009081526006602090815260408083206001600160a01b038b16845290915281208054879290613f3d908490615636565b90915550503360008181526006602090815260408083206001600160a01b038c1680855290835292819020600181015490548251958652928501939093528301889052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a00160405180910390a15b505095945050505050565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b9093015461016082015290918291906140c45760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e20300000006044820152606401610993565b6000851161410c5760405162461bcd60e51b81526020600482015260156024820152740546f6b656e4d61726b65743a3a6f70656e203e203605c1b6044820152606401610993565b8585111561415257610120810151601254869061412989836155d9565b6141339190615822565b61413d919061564e565b614147919061564e565b925060009150614194565b8486111561419457610120810151601254869061416f828a6155d9565b6141799190615822565b614183919061564e565b61418d919061564e565b9250600191505b6000806141a38a8a8787614773565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b83529052206002810183905560030181905590925090506141ee898b8787614773565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b60008082516041036142735760208301516040840151606085015160001a61426787828585614a35565b9450945050505061427b565b506000905060025b9250929050565b600081600481111561429657614296615afa565b0361429e5750565b60018160048111156142b2576142b2615afa565b036142ff5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610993565b600281600481111561431357614313615afa565b036143605760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610993565b600381600481111561437457614374615afa565b036112725760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610993565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b90920154610160830152908190819081806144888a8a610bfa565b50915091506144978782610948565b60408085015190516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156144e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145059190615809565b101561456a5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201526d696369656e742042616c616e636560901b6064820152608401610993565b60006145768883610948565b11156145dd5761459483604001513361458f8a85610948565b612943565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd3384604001516145c58a85610948565b6040516145d493929190615a48565b60405180910390a15b896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561461b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463f9190615841565b60ff16935061465861465285600a6157fd565b89610df6565b945060006146668884610948565b905061467288826126cf565b9650505050509450945094915050565b60008083600081518110614698576146986155f0565b60200260200101519050600084600186516146b391906155d9565b815181106146c3576146c36155f0565b60200260200101519050600060405180604001604052806146e385612c59565b8152602001846001600160a01b031681525090506000604051806040016040528061470d85612c59565b8152602001846001600160a01b0316815250905061472b8888610df6565b945061473b612710866000610dae565b9450600061474a42600a615636565b905061475c83838b898c600087612dc4565b614767848888612943565b50505050509392505050565b60008060008413156149f9576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b90910154846147cb576147bd82615864565b91506147c881615864565b90505b60006147d683612927565b1315614881576147e68683615880565b935060008212614851576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015484131561484c576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b6148ad565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493506148ad565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b60006148b882612927565b13156149c6576001600160a01b038089166000908152600760209081526040808320938b16835292905220600301546148f18783615880565b6148fb9190615905565b925060008112614966576001600160a01b038089166000908152600760209081526040808320938b1683529290522060080154831315614961576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b6149f2565b6001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154831215614961576001600160a01b038089166000908152600760208181526040808420948c168452939052919020015492506149f2565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b5050614a2c565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614a6c5750600090506003614a2c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614ac0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614ae957600060019250925050614a2c565b9660009650945050505050565b60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008060408385031215614b7c57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614bc457614bc4614b8b565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614bf257614bf2614b8b565b604052919050565b600060a08284031215614c0c57600080fd5b60405160a081018181106001600160401b0382111715614c2e57614c2e614b8b565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b6001600160a01b038116811461127257600080fd5b8035614c8981614c69565b919050565b60008060408385031215614ca157600080fd5b8235614cac81614c69565b91506020830135614cbc81614c69565b809150509250929050565b60006001600160401b03821115614ce057614ce0614b8b565b5060051b60200190565b600082601f830112614cfb57600080fd5b81356020614d10614d0b83614cc7565b614bca565b82815260059290921b84018101918181019086841115614d2f57600080fd5b8286015b84811015614d53578035614d4681614c69565b8352918301918301614d33565b509695505050505050565b600060208284031215614d7057600080fd5b81356001600160401b03811115614d8657600080fd5b610a9e84828501614cea565b600081518084526020808501945080840160005b83811015614dcb5781516001600160a01b031687529582019590820190600101614da6565b509495945050505050565b6020815260006109626020830184614d92565b600080600060608486031215614dfe57600080fd5b8335614e0981614c69565b92506020840135614e1981614c69565b915060408401356001600160401b03811115614e3457600080fd5b614e4086828701614cea565b9150509250925092565b600080600060608486031215614e5f57600080fd5b8335614e6a81614c69565b92506020840135614e7a81614c69565b929592945050506040919091013590565b600082601f830112614e9c57600080fd5b81356001600160401b03811115614eb557614eb5614b8b565b614ec8601f8201601f1916602001614bca565b818152846020838601011115614edd57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614f1257600080fd5b853594506020860135614f2481614c69565b9350604086013592506060860135915060808601356001600160401b03811115614f4d57600080fd5b614f5988828901614e8b565b9150509295509295909350565b60008060008060808587031215614f7c57600080fd5b8435935060208501356001600160401b03811115614f9957600080fd5b614fa587828801614cea565b949794965050505060408301359260600135919050565b600060208284031215614fce57600080fd5b81356001600160401b03811115614fe457600080fd5b610a9e84828501614e8b565b801515811461127257600080fd5b60008060006060848603121561501357600080fd5b8335925060208401359150604084013561502c81614ff0565b809150509250925092565b6000806040838503121561504a57600080fd5b8235915060208301356001600160401b0381111561506757600080fd5b61507385828601614cea565b9150509250929050565b600080600080600060a0868803121561509557600080fd5b85356150a081614c69565b945060208601356150b081614c69565b935060408601356001600160401b038111156150cb57600080fd5b6150d788828901614cea565b9350506060860135915060808601356150ef81614c69565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161512e60408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b610280810161519d82856150fd565b825161018083015260208301516101a083015260408301516101c083015260608301516101e0830152608083015161020083015260a083015161022083015260c0830151151561024083015260e08301516102608301529392505050565b60006020828403121561520d57600080fd5b813561096281614c69565b60006080828403121561522a57600080fd5b604051608081018181106001600160401b038211171561524c5761524c614b8b565b604052905080823561525d81614c69565b808252506020830135602082015260408301356040820152606083013561528381614c69565b6060919091015292915050565b6000806000808486036102408112156152a857600080fd5b85356152b381614c69565b945060208601356152c381614c69565b9350610180603f1982018113156152d957600080fd5b6152e1614ba1565b91506152ef60408801614c7e565b82526060870135602083015261530760808801614c7e565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050615382866101c08701615218565b905092959194509250565b6101c0810161539c82866150fd565b6101808201939093526101a00152919050565b600082601f8301126153c057600080fd5b813560206153d0614d0b83614cc7565b82815260059290921b840181019181810190868411156153ef57600080fd5b8286015b84811015614d5357803583529183019183016153f3565b6000806000806080858703121561542057600080fd5b84356001600160401b038082111561543757600080fd5b615443888389016153af565b9550602087013591508082111561545957600080fd5b61546588838901614cea565b9450604087013591508082111561547b57600080fd5b61548788838901614cea565b9350606087013591508082111561549d57600080fd5b506154aa878288016153af565b91505092959194509250565b60008060008060008060c087890312156154cf57600080fd5b86356001600160401b038111156154e557600080fd5b6154f189828a01614cea565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b6000806000806080858703121561553057600080fd5b843561553b81614c69565b9350602085013561554b81614c69565b925060408501356001600160401b0381111561556657600080fd5b61557287828801614cea565b925050606085013561558381614c69565b939692955090935050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156155eb576155eb6155c3565b500390565b634e487b7160e01b600052603260045260246000fd5b600060018201615618576156186155c3565b5060010190565b60008161562e5761562e6155c3565b506000190190565b60008219821115615649576156496155c3565b500190565b60008261566b57634e487b7160e01b600052601260045260246000fd5b500490565b828152604060208201526000610a9e6040830184614d92565b6000602080838503121561569c57600080fd5b82516001600160401b038111156156b257600080fd5b8301601f810185136156c357600080fd5b80516156d1614d0b82614cc7565b81815260059190911b820183019083810190878311156156f057600080fd5b928401925b8284101561570e578351825292840192908401906156f5565b979650505050505050565b600181815b8085111561575457816000190482111561573a5761573a6155c3565b8085161561574757918102915b93841c939080029061571e565b509250929050565b60008261576b5750600161221a565b816157785750600061221a565b816001811461578e5760028114615798576157b4565b600191505061221a565b60ff8411156157a9576157a96155c3565b50506001821b61221a565b5060208310610133831016604e8410600b84101617156157d7575081810a61221a565b6157e18383615719565b80600019048211156157f5576157f56155c3565b029392505050565b6000610962838361575c565b60006020828403121561581b57600080fd5b5051919050565b600081600019048311821515161561583c5761583c6155c3565b500290565b60006020828403121561585357600080fd5b815160ff8116811461096257600080fd5b6000600160ff1b8201615879576158796155c3565b5060000390565b60006001600160ff1b03818413828413808216868404861116156158a6576158a66155c3565b600160ff1b60008712828116878305891216156158c5576158c56155c3565b600087129250878205871284841616156158e1576158e16155c3565b878505871281841616156158f7576158f76155c3565b505050929093029392505050565b600080821280156001600160ff1b0384900385131615615927576159276155c3565b600160ff1b8390038412811615615940576159406155c3565b50500190565b60208082526017908201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604082015260600190565b60005b83811015615998578181015183820152602001615980565b838111156159a7576000848401525b50505050565b600082516159bf81846020870161597d565b9190910192915050565b600060018060a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c0840152615a128160e085016020870161597d565b601f01601f19169190910160e001979650505050505050565b600060208284031215615a3d57600080fd5b815161096281614ff0565b6001600160a01b039384168152919092166020820152604081019190915260600190565b85815284602082015260a060408201526000615a8b60a0830186614d92565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000615ac16080830186614d92565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215615aef57600080fd5b815161096281614c69565b634e487b7160e01b600052602160045260246000fdfea264697066735822122034006617412732b29cdc50f2fd8cc2bce97ce10ed7af8d91722370bc824d6e2164736f6c634300080e0033",
1532
1589
  "linkReferences": {},
1533
1590
  "deployedLinkReferences": {}
1534
1591
  }
package/src/agent-swap.js CHANGED
@@ -127,15 +127,17 @@ class AgentSwap extends HI {
127
127
  }
128
128
 
129
129
 
130
- async updateLimit({ buyMin = 0,buyMax = 0,holdMax = 0,token }) {
130
+ async updateLimit({ buyMin = 0,buyMax = 0,holdMax = 0,outMin = 0,inMin = 0,token }) {
131
131
  let pricing = new ERC20({ ...this.network,contract:token })
132
132
  let precision = await pricing.decimals()
133
133
  buyMin = longHandle(buyMin,precision)
134
134
  buyMax = longHandle(buyMax,precision)
135
135
  holdMax = longHandle(holdMax,precision)
136
+ outMin = longHandle(outMin,precision)
137
+ inMin = longHandle(inMin,precision)
136
138
  let result = await this.manage("updateLimit", [
137
139
  [
138
- buyMin,buyMax,holdMax
140
+ buyMin,buyMax,holdMax,outMin,inMin
139
141
  ]
140
142
  ])
141
143
  return result
@@ -299,6 +301,8 @@ class AgentSwap extends HI {
299
301
  result.buyMin = toSmall(result.buyMin,precision)
300
302
  result.buyMax = toSmall(result.buyMax,precision)
301
303
  result.holdMax = toSmall(result.holdMax,precision)
304
+ result.outMin = toSmall(result.outMin,precision)
305
+ result.inMin = toSmall(result.inMin,precision)
302
306
  return result
303
307
  }
304
308
 
@@ -315,8 +319,8 @@ class AgentSwap extends HI {
315
319
  let result = await this.SC.methods.onlyRate(inToken,outToken,path).call()
316
320
  console.log(result)
317
321
  let rates = await this.SC.methods.rateAmount(inToken,outToken).call()
318
-
319
- let hold = await this.SC.methods.holdAmount(inToken,outToken).call()
322
+ let user = this.web3.eth.defaultAccount
323
+ let hold = await this.SC.methods.holdAmount(inToken,outToken,path,user).call()
320
324
  // if(format) {
321
325
  // if(side == 0) {
322
326
  // result = await OToken.fromAmount(result)
@@ -332,7 +336,7 @@ class AgentSwap extends HI {
332
336
  result.backRate = division(taxConfig.backBuy,this.pointMax)
333
337
  result.feeRate = division(rates.feeRate,this.pointMax)
334
338
  result.reward = division(rates.reward,this.pointMax)
335
-
339
+
336
340
  let pricing = new ERC20({ ...this.network,contract:hold.pricing })
337
341
  let precision = await pricing.decimals()
338
342
  result.currentHold = toSmall(hold.currentHold,precision)
@@ -364,9 +368,14 @@ class AgentSwap extends HI {
364
368
  let result = await this.SC.methods.fundRead(inToken,outToken,path,outAmount,user).call()
365
369
 
366
370
  let decimals = await OToken.decimals()
367
- result.feeAmount = toSmall(result.feeAmount,decimals)
368
- result.outReal = toSmall(result.outReal,decimals)
369
- result.taxAmount = toSmall(result.taxAmount,decimals)
371
+ result.feeAmount = toSmall(result.group.feeAmount,decimals)
372
+ result.outReal = toSmall(result.group.outAmount,decimals)
373
+ result.taxAmount = toSmall(result.group.taxAmount,decimals)
374
+ result.backAmount = toSmall(result.group.backAmount,decimals)
375
+ result.buyAmount = toSmall(result.group.buyAmount,decimals)
376
+ result.change = toSmall(result.group.change,decimals)
377
+ result.win = parseInt(result.group.win) == 1
378
+
370
379
  result.feeRate = division(result.config.feeRate,this.pointMax)
371
380
  result.reward = division(result.config.reward,this.pointMax)
372
381
  result.rewardAmount = multiplication(result.reward,toSmall(outAmount,decimals))