60e06040523480156200001157600080fd5b5060405162004fae38038062004fae833981016040819052620000349162000235565b604051806040016040528060098152602001681d195cdd195c9554d160ba1b815250604051806040016040528060078152602001661d195cdd1554d160ca1b81525060088383838383818180806200009b62000095620001dc60201b60201c565b620001e0565b6001600160a01b0316608052505060ff1660a052620000c26000546001600160a01b031690565b600880546001600160a01b0392909216620100000262010000600160b01b031990921691909117905550600c9050620000fc83826200030c565b50600d6200010b82826200030c565b5050506000620001206200023060201b60201c565b90508060ff168360ff161115620001945760405162461bcd60e51b815260206004820152602e60248201527f4f4654576974684665653a20736861726564446563696d616c73206d7573742060448201526d6265203c3d20646563696d616c7360901b606482015260840160405180910390fd5b620001a08382620003ee565b620001ad90600a62000513565b60c0525050600e80546001600160a01b0319163317905550620001d2915050600b5490565b6010555062000524565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b601290565b6000602082840312156200024857600080fd5b81516001600160a01b03811681146200026057600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200029257607f821691505b602082108103620002b357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200030757600081815260208120601f850160051c81016020861015620002e25750805b601f850160051c820191505b818110156200030357828155600101620002ee565b5050505b505050565b81516001600160401b0381111562000328576200032862000267565b62000340816200033984546200027d565b84620002b9565b602080601f8311600181146200037857600084156200035f5750858301515b600019600386901b1c1916600185901b17855562000303565b600085815260208120601f198616915b82811015620003a95788860151825594840194600190910190840162000388565b5085821015620003c85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8416808210156200040b576200040b620003d8565b90039392505050565b600181815b8085111562000455578160001904821115620004395762000439620003d8565b808516156200044757918102915b93841c939080029062000419565b509250929050565b6000826200046e575060016200050d565b816200047d575060006200050d565b8160018114620004965760028114620004a157620004c1565b60019150506200050d565b60ff841115620004b557620004b5620003d8565b50506001821b6200050d565b5060208310610133831016604e8410600b8410161715620004e6575081810a6200050d565b620004f2838362000414565b8060001904821115620005095762000509620003d8565b0290505b92915050565b60006200026060ff8416836200045d565b60805160a05160c051614a1b6200059360003960006135680152600061073301526000818161091301528181610b5701528181610e6d01528181610f2d0152818161133501528181611be0015281816121990152818161277e01528181612ca6015261316b0152614a1b6000f3fe6080604052600436106102c75760003560e01c80621d3567146102cc57806301ffc9a7146102ee578063047fc9aa1461032357806306fdde031461034757806307e0db1714610369578063095ea7b3146103895780630df37483146103a957806310ddb137146103c957806318160ddd146103e957806323b872dd146103fe5780632cdf0b951461041e578063313ce56714610431578063365260b41461045357806339509351146104885780633d8b38f6146104a85780633f1f4fa4146104c857806340c10f19146104f557806342966c681461051557806342d65a8d146105355780634477051514610555578063455ba27d1461056a5780634b104eff1461057d5780634c42899a1461059d578063586fc5b5146105b25780635a359dc5146105fd5780635b8c41e61461061d57806366ad5c8a1461066c57806369e402651461068c57806370a08231146106ac578063715018a6146106cc5780637533d788146106e157806379c0ad4b14610701578063857749b0146107215780638cfd8f5c146107555780638da5cb5b1461078d5780639358928b146107af578063950c8a74146107c457806395d89b41146107e45780639bdb9812146107f95780639f38369a1461084b578063a457c2d71461086b578063a4c51df51461088b578063a6c3d165146108ab578063a9059cbb146108cb578063abe685cd146108eb578063b353aaa714610901578063b9818be114610935578063baf3292d1461095b578063c4461834146108eb578063c83330ce1461097b578063cbed8b9c146109d1578063d1deba1f146109f1578063d888296814610a04578063dd62ed3e14610a2c578063df2a5b3b14610a4c578063e6a20ae614610a6c578063eaffd49a14610a81578063eb8d72b714610aa1578063ecd8f21214610ac1578063f2fde38b14610ae1578063f5ecbdbc14610b01578063f851a44014610b21578063fc0c546a14610b41575b600080fd5b3480156102d857600080fd5b506102ec6102e73660046138a0565b610b54565b005b3480156102fa57600080fd5b5061030e610309366004613933565b610d85565b60405190151581526020015b60405180910390f35b34801561032f57600080fd5b5061033960105481565b60405190815260200161031a565b34801561035357600080fd5b5061035c610dbc565b60405161031a91906139b5565b34801561037557600080fd5b506102ec6103843660046139c8565b610e4e565b34801561039557600080fd5b5061030e6103a43660046139f8565b610ed7565b3480156103b557600080fd5b506102ec6103c4366004613a24565b610eef565b3480156103d557600080fd5b506102ec6103e43660046139c8565b610f0e565b3480156103f557600080fd5b50600b54610339565b34801561040a57600080fd5b5061030e610419366004613a40565b610f62565b6102ec61042c366004613a99565b610f86565b34801561043d57600080fd5b5060125b60405160ff909116815260200161031a565b34801561045f57600080fd5b5061047361046e366004613b24565b611029565b6040805192835260208301919091520161031a565b34801561049457600080fd5b5061030e6104a33660046139f8565b61107e565b3480156104b457600080fd5b5061030e6104c3366004613b89565b6110a0565b3480156104d457600080fd5b506103396104e33660046139c8565b60036020526000908152604090205481565b34801561050157600080fd5b506102ec6105103660046139f8565b61116c565b34801561052157600080fd5b506102ec610530366004613bdb565b6112a2565b34801561054157600080fd5b506102ec610550366004613b89565b611316565b34801561056157600080fd5b50610339600081565b6102ec610578366004613bf4565b61139c565b34801561058957600080fd5b506102ec610598366004613cb0565b61147d565b3480156105a957600080fd5b50610441600081565b3480156105be57600080fd5b50600f546105dd906001600160801b0380821691600160801b90041682565b604080516001600160801b0393841681529290911660208301520161031a565b34801561060957600080fd5b506102ec6106183660046139c8565b611535565b34801561062957600080fd5b50610339610638366004613d3a565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561067857600080fd5b506102ec6106873660046138a0565b6115a5565b34801561069857600080fd5b506102ec6106a7366004613dda565b611679565b3480156106b857600080fd5b506103396106c7366004613cb0565b611711565b3480156106d857600080fd5b506102ec61172c565b3480156106ed57600080fd5b5061035c6106fc3660046139c8565b611740565b34801561070d57600080fd5b506102ec61071c366004613e1c565b6117da565b34801561072d57600080fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b34801561076157600080fd5b50610339610770366004613e56565b600260209081526000928352604080842090915290825290205481565b34801561079957600080fd5b506107a2611896565b60405161031a9190613e89565b3480156107bb57600080fd5b506103396118a5565b3480156107d057600080fd5b506004546107a2906001600160a01b031681565b3480156107f057600080fd5b5061035c6118b5565b34801561080557600080fd5b5061030e610814366004613d3a565b6006602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205460ff1681565b34801561085757600080fd5b5061035c6108663660046139c8565b6118c4565b34801561087757600080fd5b5061030e6108863660046139f8565b6119da565b34801561089757600080fd5b506104736108a6366004613e9d565b611a55565b3480156108b757600080fd5b506102ec6108c6366004613b89565b611ae4565b3480156108d757600080fd5b5061030e6108e63660046139f8565b611b60565b3480156108f757600080fd5b5061033961271081565b34801561090d57600080fd5b506107a27f000000000000000000000000000000000000000000000000000000000000000081565b34801561094157600080fd5b506008546107a2906201000090046001600160a01b031681565b34801561096757600080fd5b506102ec610976366004613cb0565b611b6e565b34801561098757600080fd5b506109b76109963660046139c8565b60076020526000908152604090205461ffff81169062010000900460ff1682565b6040805161ffff909316835290151560208301520161031a565b3480156109dd57600080fd5b506102ec6109ec366004613f56565b611bc1565b6102ec6109ff3660046138a0565b611c4b565b348015610a1057600080fd5b50600854610a1f9061ffff1681565b60405161031a9190613fc4565b348015610a3857600080fd5b50610339610a47366004613fd3565b611e61565b348015610a5857600080fd5b506102ec610a6736600461400c565b611e8c565b348015610a7857600080fd5b50610441600181565b348015610a8d57600080fd5b506102ec610a9c366004614048565b611ef6565b348015610aad57600080fd5b506102ec610abc366004613b89565b612003565b348015610acd57600080fd5b50610339610adc366004613a24565b61205d565b348015610aed57600080fd5b506102ec610afc366004613cb0565b6120ef565b348015610b0d57600080fd5b5061035c610b1c366004614110565b612168565b348015610b2d57600080fd5b50600e546107a2906001600160a01b031681565b348015610b4d57600080fd5b50306107a2565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610bd15760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526001602052604081208054610bef9061415d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1b9061415d565b8015610c685780601f10610c3d57610100808354040283529160200191610c68565b820191906000526020600020905b815481529060010190602001808311610c4b57829003601f168201915b50505050509050805186869050148015610c83575060008151115b8015610cab575080516020820120604051610ca19088908890614191565b6040518091039020145b610d065760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610bc8565b610d7c8787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061221992505050565b50505050505050565b60006001600160e01b03198216630d30953d60e31b1480610db657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600c8054610dcb9061415d565b80601f0160208091040260200160405190810160405280929190818152602001828054610df79061415d565b8015610e445780601f10610e1957610100808354040283529160200191610e44565b820191906000526020600020905b815481529060010190602001808311610e2757829003601f168201915b5050505050905090565b610e56612292565b6040516307e0db1760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906307e0db1790610ea2908490600401613fc4565b600060405180830381600087803b158015610ebc57600080fd5b505af1158015610ed0573d6000803e3d6000fd5b5050505050565b600033610ee58185856122f1565b5060019392505050565b610ef7612292565b61ffff909116600090815260036020526040902055565b610f16612292565b6040516310ddb13760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906310ddb13790610ea2908490600401613fc4565b600033610f70858285612416565b610f7b85858561248a565b506001949350505050565b610f91868685612623565b509250610fff86868686610fa86020870187613cb0565b610fb86040880160208901613cb0565b610fc560408901896141a1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061266c92505050565b9250818310156110215760405162461bcd60e51b8152600401610bc8906141e7565b505050505050565b60008061106f8888888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061275292505050565b91509150965096945050505050565b600033610ee58185856110918383611e61565b61109b919061424a565b6122f1565b61ffff8316600090815260016020526040812080548291906110c19061415d565b80601f01602080910402602001604051908101604052809291908181526020018280546110ed9061415d565b801561113a5780601f1061110f5761010080835404028352916020019161113a565b820191906000526020600020905b81548152906001019060200180831161111d57829003601f168201915b505050505090508383604051611151929190614191565b60405180910390208180519060200120149150509392505050565b611174612292565b6001600160a01b0382166111ca5760405162461bcd60e51b815260206004820152601f60248201527f53454e5553443a206e6f206d696e7420746f207a65726f2061646472657373006044820152606401610bc8565b6000816111da6201518042614262565b600f546001600160801b03161061120357600f54600160801b90046001600160801b0316611206565b60005b6001600160801b0316611219919061424a565b90506000620186a0613a9861122d600b5490565b6112379190614279565b61124191906142ae565b905061124c600b5490565b15806112585750818110155b61126157600080fd5b6001600160801b03828116600160801b02429190911617600f5582611285600b5490565b61128f919061424a565b60105561129c848461280a565b50505050565b60006112ad33611711565b9050600082116112d057604051633d656a2760e01b815260040160405180910390fd5b818110156112f1576040516315f2b6e960e21b815260040160405180910390fd5b816112fb600b5490565b6113059190614262565b60105561131233836128b9565b5050565b61131e612292565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d9061136e908690869086906004016142eb565b600060405180830381600087803b15801561138857600080fd5b505af1158015610d7c573d6000803e3d6000fd5b6113a7898988612623565b50809650506114508989898988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506113f99150506020890189613cb0565b61140960408a0160208b01613cb0565b61141660408b018b6141a1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129d892505050565b9550848610156114725760405162461bcd60e51b8152600401610bc8906141e7565b505050505050505050565b611485612292565b6001600160a01b0381166114d85760405162461bcd60e51b815260206004820152601a60248201527908ccaca7440cccaca9eeedccae440c6c2dcdcdee840c4ca4060f60331b6044820152606401610bc8565b6008805462010000600160b01b031916620100006001600160a01b038416021790556040517f047912631afa564eebd3db2efe191a0dec62da1fede6bbbc1ffc89d87845b1b59061152a908390613e89565b60405180910390a150565b61153d612292565b6127108161ffff1611156115635760405162461bcd60e51b8152600401610bc890614309565b6008805461ffff191661ffff83169081179091556040517fd26030ef4a8c225ee12b646eb4466acb41fb96b6cd4660b22d0ba0124e7bdc749161152a91613fc4565b3330146116035760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610bc8565b6110218686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250612a9692505050565b611681612292565b61168b818361116c565b60405162ae511b60e21b81523060048201526001600160a01b038281166024830181905290851660448301526064820184905260006084830152906302b9446c9060a40160408051808303816000875af11580156116ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed0919061434e565b6001600160a01b031660009081526009602052604090205490565b611734612292565b61173e6000612b1c565b565b600160205260009081526040902080546117599061415d565b80601f01602080910402602001604051908101604052809291908181526020018280546117859061415d565b80156117d25780601f106117a7576101008083540402835291602001916117d2565b820191906000526020600020905b8154815290600101906020018083116117b557829003601f168201915b505050505081565b6117e2612292565b6127108161ffff1611156118085760405162461bcd60e51b8152600401610bc890614309565b60408051808201825261ffff83811680835285151560208085018281528985166000818152600784528890209651875492511515620100000262ffffff1990931696169590951717909455845192835292820192909252918201527fdd9c9685af3e6dcb56d8f4b88d2595d4add6837a150034e7781c46b6dcf8aaab906060015b60405180910390a1505050565b6000546001600160a01b031690565b60006118b0600b5490565b905090565b6060600d8054610dcb9061415d565b61ffff81166000908152600160205260408120805460609291906118e79061415d565b80601f01602080910402602001604051908101604052809291908181526020018280546119139061415d565b80156119605780601f1061193557610100808354040283529160200191611960565b820191906000526020600020905b81548152906001019060200180831161194357829003601f168201915b5050505050905080516000036119b85760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610bc8565b6119d36000601483516119cb9190614262565b839190612b6c565b9392505050565b600033816119e88286611e61565b905083811015611a485760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bc8565b610f7b82868684036122f1565b600080611ad28b8b8b8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b81528e93508d9250908c908c9081908401838280828437600092019190915250612c7992505050565b91509150995099975050505050505050565b611aec612292565b818130604051602001611b0193929190614372565b60408051601f1981840301815291815261ffff8516600090815260016020522090611b2c90826143ee565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce838383604051611889939291906142eb565b600033610ee581858561248a565b611b76612292565b600480546001600160a01b0319166001600160a01b0383161790556040517f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b9061152a908390613e89565b611bc9612292565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c90611c1d90889088908890889088906004016144a7565b600060405180830381600087803b158015611c3757600080fd5b505af1158015611472573d6000803e3d6000fd5b61ffff86166000908152600560205260408082209051611c6e9088908890614191565b90815260408051602092819003830190206001600160401b03871660009081529252902054905080611cee5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610bc8565b808383604051611cff929190614191565b604051809103902014611d5e5760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610bc8565b61ffff87166000908152600560205260408082209051611d819089908990614191565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f88018290048202830182019052868252611e19918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250612a9692505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611e509594939291906144e0565b60405180910390a150505050505050565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b611e94612292565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611889565b333014611f455760405162461bcd60e51b815260206004820152601f60248201527f4f4654436f72653a2063616c6c6572206d757374206265204f4654436f7265006044820152606401610bc8565b611f50308686612d34565b9350846001600160a01b03168a61ffff166000805160206149a683398151915286604051611f8091815260200190565b60405180910390a3604051633fe79aed60e11b81526001600160a01b03861690637fcf35da908390611fc4908e908e908e908e908e908d908d908d9060040161451b565b600060405180830381600088803b158015611fde57600080fd5b5087f1158015611ff2573d6000803e3d6000fd5b505050505050505050505050505050565b61200b612292565b61ffff83166000908152600160205260409020612029828483614578565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab838383604051611889939291906142eb565b61ffff828116600090815260076020908152604080832081518083019092525493841681526201000090930460ff16158015918401919091529091906120c2578051612710906120b19061ffff1685614279565b6120bb91906142ae565b91506120e8565b60085461ffff16156120e357600854612710906120b19061ffff1685614279565b600091505b5092915050565b6120f7612292565b6001600160a01b03811661215c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bc8565b61216581612b1c565b50565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa1580156121e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122109190810190614631565b95945050505050565b60008061227c5a60966366ad5c8a60e01b89898989604051602401612241949392919061469e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190612d86565b9150915081611021576110218686868685612e10565b3361229b611896565b6001600160a01b03161461173e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bc8565b6001600160a01b0383166123535760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc8565b6001600160a01b0382166123b45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc8565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006124228484611e61565b9050600019811461129c578181101561247d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bc8565b61129c84848484036122f1565b6001600160a01b0383166124ee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc8565b6001600160a01b0382166125505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc8565b6001600160a01b038316600090815260096020526040902054818110156125c85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bc8565b6001600160a01b0380851660008181526009602052604080822086860390559286168082529083902080548601905591516000805160206149c6833981519152906126169086815260200190565b60405180910390a361129c565b600080612630848461205d565b905061263c8184614262565b91508015612664576008546126629086906201000090046001600160a01b031683612d34565b505b935093915050565b600061267a87828481612ead565b61268385612f7d565b50905061269288888884612fa5565b9050600081116126b45760405162461bcd60e51b8152600401610bc8906146dc565b60006126ff876126c384612fd7565b6040805160006020820152602181019390935260c09190911b6001600160c01b0319166041830152805160298184030181526049909201905290565b905061270f888287878734613042565b86896001600160a01b03168961ffff166000805160206149868339815191528560405161273e91815260200190565b60405180910390a450979650505050505050565b6000806000612764876126c388612fd7565b60405163040a7bb160e41b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb10906127bb908b90309086908b908b9060040161470f565b6040805180830381865afa1580156127d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fb919061434e565b92509250509550959350505050565b6001600160a01b0382166128605760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bc8565b80600b6000828254612872919061424a565b90915550506001600160a01b0382166000818152600960209081526040808320805486019055518481526000805160206149c6833981519152910160405180910390a35050565b6001600160a01b0382166129195760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bc8565b6001600160a01b0382166000908152600960205260409020548181101561298d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bc8565b6001600160a01b03831660008181526009602090815260408083208686039055600b80548790039055518581529192916000805160206149c68339815191529101612409565b505050565b60006129f0896001846001600160401b038916612ead565b6129f987612f7d565b509050612a088a8a8a84612fa5565b905060008111612a2a5760405162461bcd60e51b8152600401610bc8906146dc565b6000612a41338a612a3a85612fd7565b8a8a6131e7565b9050612a518a8287878734613042565b888b6001600160a01b03168b61ffff1660008051602061498683398151915285604051612a8091815260200190565b60405180910390a4509998505050505050505050565b6000612aa28282613228565b905060ff8116612abd57612ab885858585613284565b610ed0565b60001960ff821601612ad557612ab885858585613302565b60405162461bcd60e51b815260206004820152601c60248201527b4f4654436f72653a20756e6b6e6f776e207061636b6574207479706560201b6044820152606401610bc8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081612b7a81601f61424a565b1015612bb95760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610bc8565b612bc3828461424a565b84511015612c075760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610bc8565b606082158015612c265760405191506000825260208201604052612c70565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612c5f578051835260209283019201612c47565b5050858452601f01601f1916604052505b50949350505050565b6000806000612c8c338a612a3a8b612fd7565b60405163040a7bb160e41b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090612ce3908d90309086908b908b9060040161470f565b6040805180830381865afa158015612cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d23919061434e565b925092505097509795505050505050565b600033306001600160a01b03861614801590612d625750806001600160a01b0316856001600160a01b031614155b15612d7257612d72858285612416565b612d7d85858561248a565b50909392505050565b6000606060008060008661ffff166001600160401b03811115612dab57612dab613ccd565b6040519080825280601f01601f191660200182016040528015612dd5576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115612df7578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff16815260200190815260200160002085604051612e419190614763565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90612e9e908790879087908790879061477f565b60405180910390a15050505050565b6000612eb88361350b565b61ffff80871660009081526002602090815260408083209389168352929052205490915080612f265760405162461bcd60e51b815260206004820152601a602482015279131e905c1c0e881b5a5b91d85cd31a5b5a5d081b9bdd081cd95d60321b6044820152606401610bc8565b612f30838261424a565b8210156110215760405162461bcd60e51b815260206004820152601b60248201527a4c7a4170703a20676173206c696d697420697320746f6f206c6f7760281b6044820152606401610bc8565b600080612f88613566565b612f9290846147d1565b9050612f9e8184614262565b9150915091565b6000336001600160a01b0386168114612fc357612fc3868285612416565b612fcd86846128b9565b5090949350505050565b600080612fe2613566565b612fec90846142ae565b90506001600160401b03811115610db65760405162461bcd60e51b815260206004820152601a6024820152794f4654436f72653a20616d6f756e745344206f766572666c6f7760301b6044820152606401610bc8565b61ffff8616600090815260016020526040812080546130609061415d565b80601f016020809104026020016040519081016040528092919081815260200182805461308c9061415d565b80156130d95780601f106130ae576101008083540402835291602001916130d9565b820191906000526020600020905b8154815290600101906020018083116130bc57829003601f168201915b50505050509050805160000361314a5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610bc8565b61315587875161358a565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c58031009084906131ac908b9086908c908c908c908c906004016147e5565b6000604051808303818588803b1580156131c557600080fd5b505af11580156131d9573d6000803e3d6000fd5b505050505050505050505050565b6060600185856001600160a01b038916858760405160200161320e9695949392919061484c565b604051602081830303815290604052905095945050505050565b600061323582600161424a565b8351101561327b5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606401610bc8565b50016001015190565b600080613290836135fb565b90925090506001600160a01b0382166132a95761dead91505b60006132b482613655565b90506132c1878483613672565b9050826001600160a01b03168761ffff166000805160206149a6833981519152836040516132f191815260200190565b60405180910390a350505050505050565b60008060008060006133138661367e565b945094509450945094506000600660008b61ffff1661ffff168152602001908152602001600020896040516133489190614763565b90815260408051602092819003830190206001600160401b038b166000908152925281205460ff16915061337b85613655565b9050816133e95761338d8b3083613672565b61ffff8c166000908152600660205260409081902090519192506001916133b5908d90614763565b90815260408051602092819003830190206001600160401b038d16600090815292529020805460ff19169115159190911790555b6001600160a01b0386163b61343b577f9aedf5fdba8716db3b6705ca00150643309995d4f818a249ed6dde6677e7792d866040516134279190613e89565b60405180910390a15050505050505061129c565b8a8a8a8a8a8a868a60008a613459578b6001600160401b031661345b565b5a5b905060008061348d5a609663eaffd49a60e01b8e8e8e8d8d8d8d8d6040516024016122419897969594939291906148b1565b9150915081156134e6578751602089012060405161ffff8d16907fb8890edbfc1c74692f527444645f95489c3703cc2df42e4a366f5d06fa6cd884906134d8908e908e908690614925565b60405180910390a2506134f3565b6134f38b8b8b8b85612e10565b50505050505050505050505050505050505050505050565b600060228251101561355e5760405162461bcd60e51b815260206004820152601c60248201527b4c7a4170703a20696e76616c69642061646170746572506172616d7360201b6044820152606401610bc8565b506022015190565b7f000000000000000000000000000000000000000000000000000000000000000090565b61ffff8216600090815260036020526040812054908190036135ab57506127105b808211156129d35760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610bc8565b600080806136098482613228565b60ff1614801561361a575082516029145b6136365760405162461bcd60e51b8152600401610bc890614953565b61364183600d61370a565b915061364e83602161376f565b9050915091565b600061365f613566565b610db6906001600160401b038416614279565b60006120e8838361280a565b6000808060608160016136918783613228565b60ff16146136b15760405162461bcd60e51b8152600401610bc890614953565b6136bc86600d61370a565b93506136c986602161376f565b92506136d68660296137cc565b94506136e386604961376f565b90506136ff60518088516136f79190614262565b889190612b6c565b915091939590929450565b600061371782601461424a565b8351101561375f5760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610bc8565b500160200151600160601b900490565b600061377c82600861424a565b835110156137c35760405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606401610bc8565b50016008015190565b60006137d982602061424a565b835110156138215760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610bc8565b50016020015190565b803561ffff8116811461383c57600080fd5b919050565b60008083601f84011261385357600080fd5b5081356001600160401b0381111561386a57600080fd5b60208301915083602082850101111561388257600080fd5b9250929050565b80356001600160401b038116811461383c57600080fd5b600080600080600080608087890312156138b957600080fd5b6138c28761382a565b955060208701356001600160401b03808211156138de57600080fd5b6138ea8a838b01613841565b90975095508591506138fe60408a01613889565b9450606089013591508082111561391457600080fd5b5061392189828a01613841565b979a9699509497509295939492505050565b60006020828403121561394557600080fd5b81356001600160e01b0319811681146119d357600080fd5b60005b83811015613978578181015183820152602001613960565b8381111561129c5750506000910152565b600081518084526139a181602086016020860161395d565b601f01601f19169290920160200192915050565b6020815260006119d36020830184613989565b6000602082840312156139da57600080fd5b6119d38261382a565b6001600160a01b038116811461216557600080fd5b60008060408385031215613a0b57600080fd5b8235613a16816139e3565b946020939093013593505050565b60008060408385031215613a3757600080fd5b613a168361382a565b600080600060608486031215613a5557600080fd5b8335613a60816139e3565b92506020840135613a70816139e3565b929592945050506040919091013590565b600060608284031215613a9357600080fd5b50919050565b60008060008060008060c08789031215613ab257600080fd5b8635613abd816139e3565b9550613acb6020880161382a565b945060408701359350606087013592506080870135915060a08701356001600160401b03811115613afb57600080fd5b613b0789828a01613a81565b9150509295509295509295565b8035801515811461383c57600080fd5b60008060008060008060a08789031215613b3d57600080fd5b613b468761382a565b95506020870135945060408701359350613b6260608801613b14565b925060808701356001600160401b03811115613b7d57600080fd5b61392189828a01613841565b600080600060408486031215613b9e57600080fd5b613ba78461382a565b925060208401356001600160401b03811115613bc257600080fd5b613bce86828701613841565b9497909650939450505050565b600060208284031215613bed57600080fd5b5035919050565b60008060008060008060008060006101008a8c031215613c1357600080fd5b8935613c1e816139e3565b9850613c2c60208b0161382a565b975060408a0135965060608a0135955060808a0135945060a08a01356001600160401b0380821115613c5d57600080fd5b613c698d838e01613841565b9096509450849150613c7d60c08d01613889565b935060e08c0135915080821115613c9357600080fd5b50613ca08c828d01613a81565b9150509295985092959850929598565b600060208284031215613cc257600080fd5b81356119d3816139e3565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613d0b57613d0b613ccd565b604052919050565b60006001600160401b03821115613d2c57613d2c613ccd565b50601f01601f191660200190565b600080600060608486031215613d4f57600080fd5b613d588461382a565b925060208401356001600160401b03811115613d7357600080fd5b8401601f81018613613d8457600080fd5b8035613d97613d9282613d13565b613ce3565b818152876020838501011115613dac57600080fd5b81602084016020830137600060208383010152809450505050613dd160408501613889565b90509250925092565b600080600060608486031215613def57600080fd5b8335613dfa816139e3565b9250602084013591506040840135613e11816139e3565b809150509250925092565b600080600060608486031215613e3157600080fd5b613e3a8461382a565b9250613e4860208501613b14565b9150613dd16040850161382a565b60008060408385031215613e6957600080fd5b613e728361382a565b9150613e806020840161382a565b90509250929050565b6001600160a01b0391909116815260200190565b600080600080600080600080600060e08a8c031215613ebb57600080fd5b613ec48a61382a565b985060208a0135975060408a0135965060608a01356001600160401b0380821115613eee57600080fd5b613efa8d838e01613841565b9098509650869150613f0e60808d01613889565b9550613f1c60a08d01613b14565b945060c08c0135915080821115613f3257600080fd5b50613f3f8c828d01613841565b915080935050809150509295985092959850929598565b600080600080600060808688031215613f6e57600080fd5b613f778661382a565b9450613f856020870161382a565b93506040860135925060608601356001600160401b03811115613fa757600080fd5b613fb388828901613841565b969995985093965092949392505050565b61ffff91909116815260200190565b60008060408385031215613fe657600080fd5b8235613ff1816139e3565b91506020830135614001816139e3565b809150509250929050565b60008060006060848603121561402157600080fd5b61402a8461382a565b92506140386020850161382a565b9150604084013590509250925092565b6000806000806000806000806000806101008b8d03121561406857600080fd5b6140718b61382a565b995060208b01356001600160401b038082111561408d57600080fd5b6140998e838f01613841565b909b5099508991506140ad60408e01613889565b985060608d0135975060808d013591506140c6826139e3565b90955060a08c0135945060c08c013590808211156140e357600080fd5b506140f08d828e01613841565b9150809450508092505060e08b013590509295989b9194979a5092959850565b6000806000806080858703121561412657600080fd5b61412f8561382a565b935061413d6020860161382a565b9250604085013561414d816139e3565b9396929550929360600135925050565b600181811c9082168061417157607f821691505b602082108103613a9357634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b6000808335601e198436030181126141b857600080fd5b8301803591506001600160401b038211156141d257600080fd5b60200191503681900382131561388257600080fd5b6020808252602d908201527f426173654f4654576974684665653a20616d6f756e74206973206c657373207460408201526c1a185b881b5a5b905b5bdd5b9d609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561425d5761425d614234565b500190565b60008282101561427457614274614234565b500390565b600081600019048311821515161561429357614293614234565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826142bd576142bd614298565b500490565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff841681526040602082015260006122106040830184866142c2565b60208082526025908201527f4665653a20666565206270206d757374206265203c3d2042505f44454e4f4d496040820152642720aa27a960d91b606082015260800190565b6000806040838503121561436157600080fd5b505080516020909101519092909150565b8284823760609190911b6001600160601b0319169101908152601401919050565b601f8211156129d357600081815260208120601f850160051c810160208610156143ba5750805b601f850160051c820191505b81811015611021578281556001016143c6565b600019600383901b1c191660019190911b1790565b81516001600160401b0381111561440757614407613ccd565b61441b81614415845461415d565b84614393565b602080601f83116001811461444a57600084156144385750858301515b61444285826143d9565b865550611021565b600085815260208120601f198616915b828110156144795788860151825594840194600190910190840161445a565b50858210156144975787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600061ffff8088168352808716602084015250846040830152608060608301526144d56080830184866142c2565b979650505050505050565b61ffff861681526080602082015260006144fe6080830186886142c2565b6001600160401b0394909416604083015250606001529392505050565b61ffff8916815260c06020820152600061453960c08301898b6142c2565b6001600160401b0388166040840152606083018790526080830186905282810360a08401526145698185876142c2565b9b9a5050505050505050505050565b6001600160401b0383111561458f5761458f613ccd565b6145a38361459d835461415d565b83614393565b6000601f8411600181146145d157600085156145bf5750838201355b6145c986826143d9565b845550610ed0565b600083815260209020601f19861690835b8281101561460257868501358255602094850194600190920191016145e2565b508682101561461f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561464357600080fd5b81516001600160401b0381111561465957600080fd5b8201601f8101841361466a57600080fd5b8051614678613d9282613d13565b81815285602083850101111561468d57600080fd5b61221082602083016020860161395d565b61ffff851681526080602082015260006146bb6080830186613989565b6001600160401b038516604084015282810360608401526144d58185613989565b60208082526019908201527813d19510dbdc994e88185b5bdd5b9d081d1bdbc81cdb585b1b603a1b604082015260600190565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061473d90830186613989565b841515606084015282810360808401526147578185613989565b98975050505050505050565b6000825161477581846020870161395d565b9190910192915050565b61ffff8616815260a06020820152600061479c60a0830187613989565b6001600160401b038616604084015282810360608401526147bd8186613989565b905082810360808401526147578185613989565b6000826147e0576147e0614298565b500690565b61ffff8716815260c06020820152600061480260c0830188613989565b82810360408401526148148188613989565b6001600160a01b0387811660608601528616608085015283810360a0850152905061483f8185613989565b9998505050505050505050565b6001600160f81b031960f888901b168152600181018690526001600160c01b031960c086811b821660218401526029830186905284901b166049820152815160009061489f81605185016020870161395d565b91909101605101979650505050505050565b600061010061ffff8b1683528060208401526148cf8184018b613989565b6001600160401b038a166040850152606084018990526001600160a01b038816608085015260a0840187905283810360c0850152905061490f8186613989565b9150508260e08301529998505050505050505050565b6060815260006149386060830186613989565b6001600160401b039490941660208301525060400152919050565b60208082526018908201527713d19510dbdc994e881a5b9d985b1a59081c185e5b1bd85960421b60408201526060019056fed81fc9b8523134ed613870ed029d6170cbb73aa6a6bc311b9a642689fb9df59abf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bfddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a4aaab2bf6543707dd8b730d599e39b8e5776d1bc78b5a7857d1269b27c77beb64736f6c634300080f003300000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675