60806040526105dc600655348015610015575f80fd5b50604051613eff380380613eff8339810160408190526100349161017e565b60408051602081019091525f8152819061004d81610102565b506001600160a01b03811661007c57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61008581610112565b506001600160a01b0382166100dc5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964207061796d656e7420746f6b656e00000000000000000000006044820152606401610073565b50600780546001600160a01b0319166001600160a01b0392909216919091179055610301565b600261010e8282610247565b5050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b0381168114610179575f80fd5b919050565b5f806040838503121561018f575f80fd5b61019883610163565b91506101a660208401610163565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806101d757607f821691505b6020821081036101f557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561024257805f5260205f20601f840160051c810160208510156102205750805b601f840160051c820191505b8181101561023f575f815560010161022c565b50505b505050565b81516001600160401b03811115610260576102606101af565b6102748161026e84546101c3565b846101fb565b6020601f8211600181146102a6575f831561028f5750848201515b5f19600385901b1c1916600184901b17845561023f565b5f84815260208120601f198516915b828110156102d557878501518255602094850194600190920191016102b5565b50848210156102f257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b613bf18061030e5f395ff3fe608060405234801561000f575f80fd5b50600436106101f1575f3560e01c80638da5cb5b11610114578063cd53d08e116100a9578063e985e9c511610079578063e985e9c5146104ba578063f242432a146104cd578063f2fde38b146104e0578063f7d97577146104f3578063ffbe48e414610506575f80fd5b8063cd53d08e14610444578063d27df4ef1461046c578063d7478f001461047f578063db0bec7d14610492575f80fd5b8063a776de93116100e4578063a776de93146103ec578063afb18fe7146103ff578063b8f5d26a14610412578063bd85b03914610425575f80fd5b80638da5cb5b14610376578063906a61111461039b57806393b2467e146103ba578063a22cb465146103d9575f80fd5b806338d73b0d1161018a578063649d59901161015a578063649d59901461031d578063715018a61461033c578063731133e914610344578063869f759414610357575f80fd5b806338d73b0d146102c05780634e1273f4146102c95780634f558e79146102e9578063600fdf381461030a575f80fd5b806318160ddd116101c557806318160ddd1461027357806320c9ec811461027b5780632109caa31461028e5780632eb2c2d6146102ad575f80fd5b8062fdd58e146101f557806301ffc9a71461021b5780630e89341c1461023e578063162094c41461025e575b5f80fd5b6102086102033660046130cf565b610546565b6040519081526020015b60405180910390f35b61022e61022936600461310e565b61056d565b6040519015158152602001610212565b61025161024c366004613130565b6105bc565b6040516102129190613175565b61027161026c36600461323c565b61065b565b005b600454610208565b61027161028936600461329a565b6106ca565b61020861029c366004613130565b60106020525f908152604090205481565b6102716102bb366004613393565b610823565b61020860065481565b6102dc6102d7366004613443565b61088a565b6040516102129190613536565b61022e6102f7366004613130565b5f90815260036020526040902054151590565b610271610318366004613548565b610954565b61020861032b366004613130565b60116020525f908152604090205481565b6102716112b3565b61027161035236600461357d565b6112c6565b610208610365366004613130565b5f908152600c602052604090205490565b6005546001600160a01b03165b6040516001600160a01b039091168152602001610212565b6102086103a9366004613130565b600a6020525f908152604090205481565b6102086103c8366004613130565b600e6020525f908152604090205481565b6102716103e73660046135e8565b6113bb565b6102716103fa36600461361f565b6113ca565b600754610383906001600160a01b031681565b610271610420366004613677565b61182c565b610208610433366004613130565b5f9081526003602052604090205490565b610383610452366004613130565b60086020525f90815260409020546001600160a01b031681565b61027161047a3660046136ad565b611da6565b61027161048d36600461361f565b611f23565b6103836104a0366004613130565b600f6020525f90815260409020546001600160a01b031681565b61022e6104c8366004613707565b612348565b6102716104db366004613733565b612375565b6102716104ee36600461378a565b6123d4565b6102716105013660046137a5565b612411565b61052e610514366004613130565b60096020525f90815260409020546001600160601b031681565b6040516001600160601b039091168152602001610212565b5f818152602081815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216636cdb3d1360e11b148061059d57506001600160e01b031982166303a24d0760e21b145b8061056757506301ffc9a760e01b6001600160e01b0319831614610567565b5f818152600b602052604090208054606091906105d8906137c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610604906137c5565b801561064f5780601f106106265761010080835404028352916020019161064f565b820191905f5260205f20905b81548152906001019060200180831161063257829003601f168201915b50505050509050919050565b5f828152600860205260409020546001600160a01b031633148061068957506005546001600160a01b031633145b6106ae5760405162461bcd60e51b81526004016106a5906137fd565b60405180910390fd5b5f828152600b602052604090206106c58282613869565b505050565b5f868152600860205260409020546001600160a01b0316156107265760405162461bcd60e51b81526020600482015260156024820152744974656d494420616c72656164792065786973747360581b60448201526064016106a5565b612710836001600160601b031611156107515760405162461bcd60e51b81526004016106a590613923565b6064821015801561076457506121348211155b6107805760405162461bcd60e51b81526004016106a59061395a565b5f86815260086020908152604080832080546001600160a01b031916331790556009825280832080546001600160601b0388166001600160601b0319909116179055600a8252808320859055600b90915290206107dd8582613869565b5084156107f9575f868152600c6020526040902085905561080b565b5f868152600c602052604090205f1990555b5f958652600d60205260409095209490945550505050565b336001600160a01b038616811480159061084457506108428682612348565b155b156108755760405163711bec9160e11b81526001600160a01b038083166004830152871660248201526044016106a5565b610882868686868661246c565b505050505050565b606081518351146108bb5781518351604051635b05999160e01b8152600481019290925260248201526044016106a5565b5f83516001600160401b038111156108d5576108d5613187565b6040519080825280602002602001820160405280156108fe578160200160208202803683370190505b5090505f5b845181101561094c5760208082028601015161092790602080840287010151610546565b82828151811061093957610939613988565b6020908102919091010152600101610903565b509392505050565b60408051818152601c818301527f5374617274696e6720707572636861736545787465726e616c4e4654000000006060820152602081018390529051849133917f34ca6c4024c6f369b035b6a65353fa6eb022d7438032c348426fb7df447fcf639181900360800190a35f838152600f602090815260408083205460108352818420546011909352928190205490516001600160a01b039093169283905f80516020613b9c83398151915290610a329060208082526014908201527345787465726e616c204e4654206164647265737360601b604082015260600190565b60405180910390a26040805181815260118183015270115e1d195c9b985b081d1bdad95b881251607a1b60608201526020810184905290515f80516020613b7c8339815191529181900360800190a160408051818152600f818301526e283934b1b2903832b9103a37b5b2b760891b60608201526020810183905290515f80516020613b7c8339815191529181900360800190a16001600160a01b038316610b1c5760405162461bcd60e51b815260206004820152601760248201527f45787465726e616c204e4654206e6f74206c697374656400000000000000000060448201526064016106a5565b6007546006546001600160a01b03909116905f9061271090610b3e88866139b0565b610b4891906139b0565b610b5291906139c7565b5f8981526009602052604081205491925090612710906001600160601b0316610b7b89876139b0565b610b8591906139b0565b610b8f91906139c7565b5f8a8152600a60205260408120549192509061271090610baf8a886139b0565b610bb991906139b0565b610bc391906139c7565b90505f818385610bd38c8a6139b0565b610bdd91906139e6565b610be791906139e6565b610bf191906139e6565b90505f80516020613b7c83398151915284604051610c3b91906040808252600f908201526e4d61726b6574706c6163652066656560881b6060820152602081019190915260800190565b60405180910390a160408051818152600b818301526a526f79616c74792066656560a81b60608201526020810185905290515f80516020613b7c8339815191529181900360800190a160408051818152600c818301526b52656665727265722066656560a01b60608201526020810184905290515f80516020613b7c8339815191529181900360800190a160408051818152600d818301526c14d95b1b195c88185b5bdd5b9d609a1b60608201526020810183905290515f80516020613b7c8339815191529181900360800190a1846001600160a01b03166323b872dd33610d2b6005546001600160a01b031690565b876040518463ffffffff1660e01b8152600401610d4a939291906139f9565b6020604051808303815f875af1158015610d66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8a9190613a1d565b610dcf5760405162461bcd60e51b815260206004820152601660248201527513585c9ad95d1c1b1858d9481999594819985a5b195960521b60448201526064016106a5565b6005546001600160a01b03166001600160a01b03165f80516020613b9c833981519152604051610e30906020808252601e908201527f4d61726b6574706c61636520666565207472616e7366657272656420746f0000604082015260600190565b60405180910390a28215610f70575f8b815260086020526040908190205490516323b872dd60e01b81526001600160a01b03808816926323b872dd92610e7e923392169088906004016139f9565b6020604051808303815f875af1158015610e9a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebe9190613a1d565b610eff5760405162461bcd60e51b8152602060048201526012602482015271149bde585b1d1e481999594819985a5b195960721b60448201526064016106a5565b5f8b815260086020526040908190205490516001600160a01b03909116905f80516020613b9c83398151915290610f67906020808252601a908201527f526f79616c747920666565207472616e7366657272656420746f000000000000604082015260600190565b60405180910390a25b6001600160a01b038a1615801590610f8757505f82115b1561109d576040516323b872dd60e01b81526001600160a01b038616906323b872dd90610fbc9033908e9087906004016139f9565b6020604051808303815f875af1158015610fd8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffc9190613a1d565b61103e5760405162461bcd60e51b8152602060048201526013602482015272149959995c9c995c881999594819985a5b1959606a1b60448201526064016106a5565b896001600160a01b03165f80516020613b9c833981519152604051611094906020808252601b908201527f526566657272657220666565207472616e7366657272656420746f0000000000604082015260600190565b60405180910390a25b5f8b815260086020526040908190205490516323b872dd60e01b81526001600160a01b03808816926323b872dd926110dd923392169086906004016139f9565b6020604051808303815f875af11580156110f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111d9190613a1d565b6111615760405162461bcd60e51b815260206004820152601560248201527414d95b1b195c881c185e5b595b9d0819985a5b1959605a1b60448201526064016106a5565b5f8b815260086020526040908190205490516001600160a01b03909116905f80516020613b9c833981519152906111c9906020808252601d908201527f53656c6c6572207061796d656e74207472616e7366657272656420746f000000604082015260600190565b60405180910390a2876001600160a01b03165f80516020613b9c8339815191526040516112329060208082526022908201527f496e6974696174696e67207472616e7366657245787465726e616c4e4654206660408201526137b960f11b606082015260800190565b60405180910390a25f8b81526008602052604090205461126090899089906001600160a01b0316338d6124d1565b8a337f5bc97d73357ac0d035d4b9268a69240988a5776b8a4fcced3dbc223960123f408b61128e818b6139b0565b6040805192835260208301919091520160405180910390a35050505050505050505050565b6112bb61297e565b6112c45f6129ab565b565b5f838152600860205260409020546001600160a01b03163314806112f457506005546001600160a01b031633145b6113405760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c792063726561746f72206f72206f776e65722063616e206d696e74000060448201526064016106a5565b5f838152600c6020908152604080832054600390925290912054611365908490613a38565b11156113a95760405162461bcd60e51b815260206004820152601360248201527213585e081cdd5c1c1b1e48195e18d959591959606a1b60448201526064016106a5565b6113b5848484846129fc565b50505050565b6113c6338383612a57565b5050565b6001600160a01b0385166114165760405162461bcd60e51b8152602060048201526013602482015272496e76616c6964204e4654206164647265737360681b60448201526064016106a5565b5f83116114655760405162461bcd60e51b815260206004820152601c60248201527f5072696365206d7573742062652067726561746572207468616e20300000000060448201526064016106a5565b612710826001600160601b031611156114905760405162461bcd60e51b81526004016106a590613923565b606481101580156114a357506121348111155b6114bf5760405162461bcd60e51b81526004016106a59061395a565b5f868152600860205260409020546001600160a01b03161561151b5760405162461bcd60e51b81526020600482015260156024820152744974656d494420616c72656164792065786973747360581b60448201526064016106a5565b6040516301ffc9a760e01b81526001600160a01b038616906301ffc9a79061154e906380ac58cd60e01b90600401613a4b565b602060405180830381865afa158015611569573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158d9190613a1d565b15611646576040516331a9108f60e11b81526004810185905233906001600160a01b03871690636352211e90602401602060405180830381865afa1580156115d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fb9190613a60565b6001600160a01b0316146116415760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a34329037bbb732b960991b60448201526064016106a5565b6117a5565b6040516301ffc9a760e01b81526001600160a01b038616906301ffc9a79061167990636cdb3d1360e11b90600401613a4b565b602060405180830381865afa158015611694573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b89190613a1d565b1561176457604051627eeac760e11b8152336004820152602481018590525f906001600160a01b0387169062fdd58e90604401602060405180830381865afa158015611706573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061172a9190613a7b565b116116415760405162461bcd60e51b815260206004820152600a6024820152694e6f2062616c616e636560b01b60448201526064016106a5565b60405162461bcd60e51b8152602060048201526016602482015275556e737570706f7274656420746f6b656e207479706560501b60448201526064016106a5565b5f9586526008602090815260408088208054336001600160a01b031991821617909155600f835281892080549091166001600160a01b039890981697909717909655601081528587209490945560118452848620929092556009835283852080546001600160601b0319166001600160601b0392909216919091179055600a909152912055565b5f821161186c5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b60448201526064016106a5565b5f838152600860205260409020546001600160a01b03166118c75760405162461bcd60e51b8152602060048201526015602482015274125d195b525108191bd95cc81b9bdd08195e1a5cdd605a1b60448201526064016106a5565b6007546001600160a01b03165f6118e9855f908152600d602052604090205490565b6118f390856139b0565b90505f6127106006548361190791906139b0565b61191191906139c7565b5f87815260096020526040812054919250906127109061193a906001600160601b0316856139b0565b61194491906139c7565b5f888152600a6020526040812054919250906127109061196490866139b0565b61196e91906139c7565b90505f818361197d86886139e6565b61198791906139e6565b61199191906139e6565b9050856001600160a01b03166323b872dd336119b56005546001600160a01b031690565b876040518463ffffffff1660e01b81526004016119d4939291906139f9565b6020604051808303815f875af11580156119f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a149190613a1d565b611a595760405162461bcd60e51b815260206004820152601660248201527513585c9ad95d1c1b1858d9481999594819985a5b195960521b60448201526064016106a5565b8215611b20575f89815260086020526040908190205490516323b872dd60e01b81526001600160a01b03808916926323b872dd92611a9f923392169088906004016139f9565b6020604051808303815f875af1158015611abb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611adf9190613a1d565b611b205760405162461bcd60e51b8152602060048201526012602482015271149bde585b1d1e481999594819985a5b195960721b60448201526064016106a5565b6001600160a01b03871615801590611b3757505f82115b15611bee576040516323b872dd60e01b81526001600160a01b038716906323b872dd90611b6c9033908b9087906004016139f9565b6020604051808303815f875af1158015611b88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bac9190613a1d565b611bee5760405162461bcd60e51b8152602060048201526013602482015272149959995c9c995c881999594819985a5b1959606a1b60448201526064016106a5565b5f89815260086020526040908190205490516323b872dd60e01b81526001600160a01b03808916926323b872dd92611c2e923392169086906004016139f9565b6020604051808303815f875af1158015611c4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6e9190613a1d565b611cb25760405162461bcd60e51b815260206004820152601560248201527414d95b1b195c881c185e5b595b9d0819985a5b1959605a1b60448201526064016106a5565b5f89815260036020526040812054611ccb908a90613a38565b5f8b8152600c6020526040902054909150811115611d215760405162461bcd60e51b815260206004820152601360248201527213585e081cdd5c1c1b1e48195e18d959591959606a1b60448201526064016106a5565b611d3b338b8b60405180602001604052805f8152506129fc565b5f8a8152600e6020526040812080548b9290611d58908490613a38565b9091555050604080518a8152602081018890528b9133917f5bc97d73357ac0d035d4b9268a69240988a5776b8a4fcced3dbc223960123f40910160405180910390a350505050505050505050565b5f868152600860205260409020546001600160a01b0316331480611dd457506005546001600160a01b031633145b611df05760405162461bcd60e51b81526004016106a5906137fd565b612710826001600160601b03161115611e1b5760405162461bcd60e51b81526004016106a590613923565b60648110158015611e2e57506121348111155b611e4a5760405162461bcd60e51b81526004016106a59061395a565b8415611ecc575f86815260036020526040902054851015611ebb5760405162461bcd60e51b815260206004820152602560248201527f4e6577206d617820737570706c79206c657373207468616e20746f74616c20736044820152647570706c7960d81b60648201526084016106a5565b5f868152600c602052604090208590555b5f868152600d602090815260408083208790556009825280832080546001600160601b0319166001600160601b038716179055600a8252808320849055600b9091529020611f1a8482613869565b50505050505050565b6001600160a01b038516611f795760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420636f6e74726163742061646472657373000000000000000060448201526064016106a5565b5f8311611fc85760405162461bcd60e51b815260206004820152601f60248201527f5072696365206d7573742062652067726561746572207468616e207a65726f0060448201526064016106a5565b612710826001600160601b03161115611ff35760405162461bcd60e51b81526004016106a590613923565b6064811015801561200657506121348111155b6120225760405162461bcd60e51b81526004016106a59061395a565b6040516301ffc9a760e01b81525f906001600160a01b038716906301ffc9a790612057906380ac58cd60e01b90600401613a4b565b602060405180830381865afa158015612072573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120969190613a1d565b90505f866001600160a01b03166301ffc9a7636cdb3d1360e11b6040518263ffffffff1660e01b81526004016120cc9190613a4b565b602060405180830381865afa1580156120e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061210b9190613a1d565b905081806121165750805b6121625760405162461bcd60e51b815260206004820152601960248201527f556e737570706f7274656420636f6e747261637420747970650000000000000060448201526064016106a5565b811561221c576040516331a9108f60e11b81526004810187905233906001600160a01b03891690636352211e90602401602060405180830381865afa1580156121ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d19190613a60565b6001600160a01b0316146122175760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a34329037bbb732b960991b60448201526064016106a5565b6122c3565b604051627eeac760e11b8152336004820152602481018790525f906001600160a01b0389169062fdd58e90604401602060405180830381865afa158015612265573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122899190613a7b565b116122c35760405162461bcd60e51b815260206004820152600a6024820152694e6f2062616c616e636560b01b60448201526064016106a5565b5f8881526011602090815260408083208890556009825280832080546001600160601b0319166001600160601b038916179055600a825291829020859055905186815287916001600160a01b038a16917f86c5148aa90a61fff0257ff768e672193c98504997aaff3db75438e007265aec910160405180910390a35050505050505050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205460ff1690565b336001600160a01b038616811480159061239657506123948682612348565b155b156123c75760405163711bec9160e11b81526001600160a01b038083166004830152871660248201526044016106a5565b6108828686868686612aeb565b6123dc61297e565b6001600160a01b03811661240557604051631e4fbdf760e01b81525f60048201526024016106a5565b61240e816129ab565b50565b5f828152600860205260409020546001600160a01b031633148061243f57506005546001600160a01b031633145b61245b5760405162461bcd60e51b81526004016106a5906137fd565b5f918252600d602052604090912055565b6001600160a01b03841661249557604051632bfa23e760e11b81525f60048201526024016106a5565b6001600160a01b0385166124bd57604051626a0d4560e21b81525f60048201526024016106a5565b6124ca8585858585612b6a565b5050505050565b846001600160a01b03165f80516020613b9c833981519152604051612527906020808252601e908201527f7472616e7366657245787465726e616c4e46542063616c6c656420666f720000604082015260600190565b60405180910390a2826001600160a01b03165f80516020613b9c833981519152604051612575906020808252600d908201526c5472616e736665722066726f6d60981b604082015260600190565b60405180910390a2816001600160a01b03165f80516020613b9c8339815191526040516125c1906020808252600b908201526a5472616e7366657220746f60a81b604082015260600190565b60405180910390a26040805181815260088183015267151bdad95b88125160c21b60608201526020810186905290515f80516020613b7c8339815191529181900360800190a16040805181815260068183015265105b5bdd5b9d60d21b60608201526020810183905290515f80516020613b7c8339815191529181900360800190a16040516301ffc9a760e01b81526001600160a01b038616906301ffc9a790612676906380ac58cd60e01b90600401613a4b565b602060405180830381865afa158015612691573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b59190613a1d565b156127d657806001146127165760405162461bcd60e51b815260206004820152602360248201527f4552432d37323120746f6b656e7320616c77617973206861766520616d6f756e60448201526274203160e81b60648201526084016106a5565b604051632142170760e11b81526001600160a01b038616906342842e0e90612746908690869089906004016139f9565b5f604051808303815f87803b15801561275d575f80fd5b505af115801561276f573d5f803e3d5ffd5b50505050816001600160a01b03165f80516020613b9c8339815191526040516127c9906020808252601c908201527f4552432d37323120746f6b656e207472616e7366657272656420746f00000000604082015260600190565b60405180910390a26124ca565b6040516301ffc9a760e01b81526001600160a01b038616906301ffc9a79061280990636cdb3d1360e11b90600401613a4b565b602060405180830381865afa158015612824573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128489190613a1d565b15611764575f81116128af5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e203020666f60448201526972204552432d3131353560b01b60648201526084016106a5565b604051637921219560e11b81526001600160a01b0384811660048301528381166024830152604482018690526064820183905260a060848301525f60a483015286169063f242432a9060c4015f604051808303815f87803b158015612912575f80fd5b505af1158015612924573d5f803e3d5ffd5b50505050816001600160a01b03165f80516020613b9c8339815191526040516127c9906020808252601d908201527f4552432d3131353520746f6b656e207472616e7366657272656420746f000000604082015260600190565b6005546001600160a01b031633146112c45760405163118cdaa760e01b81523360048201526024016106a5565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038416612a2557604051632bfa23e760e11b81525f60048201526024016106a5565b604080516001808252602082018690528183019081526060820185905260808201909252906108825f87848487612b6a565b6001600160a01b038216612a7f5760405162ced3e160e81b81525f60048201526024016106a5565b6001600160a01b038381165f81815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416612b1457604051632bfa23e760e11b81525f60048201526024016106a5565b6001600160a01b038516612b3c57604051626a0d4560e21b81525f60048201526024016106a5565b60408051600180825260208201869052818301908152606082018590526080820190925290611f1a87878484875b612b7685858585612bbd565b6001600160a01b038416156124ca5782513390600103612baf5760208481015190840151612ba8838989858589612ca4565b5050610882565b610882818787878787612dc5565b612bc984848484612eac565b6001600160a01b038416612c46575f805b8351811015612c2d5760208181028481018201519086018201515f908152600390925260408220805491928392612c12908490613a38565b90915550612c2290508184613a38565b925050600101612bda565b508060045f828254612c3f9190613a38565b9091555050505b6001600160a01b0383166113b5575f805b8351811015612c935760208181028481018201519086018201515f90815260039092526040909120805482900390559190910190600101612c57565b506004805491909103905550505050565b6001600160a01b0384163b156108825760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190612ce89089908990889088908890600401613a92565b6020604051808303815f875af1925050508015612d22575060408051601f3d908101601f19168201909252612d1f91810190613ad6565b60015b612d89573d808015612d4f576040519150601f19603f3d011682016040523d82523d5f602084013e612d54565b606091505b5080515f03612d8157604051632bfa23e760e11b81526001600160a01b03861660048201526024016106a5565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b14611f1a57604051632bfa23e760e11b81526001600160a01b03861660048201526024016106a5565b6001600160a01b0384163b156108825760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190612e099089908990889088908890600401613af1565b6020604051808303815f875af1925050508015612e43575060408051601f3d908101601f19168201909252612e4091810190613ad6565b60015b612e70573d808015612d4f576040519150601f19603f3d011682016040523d82523d5f602084013e612d54565b6001600160e01b0319811663bc197c8160e01b14611f1a57604051632bfa23e760e11b81526001600160a01b03861660048201526024016106a5565b8051825114612edb5781518151604051635b05999160e01b8152600481019290925260248201526044016106a5565b335f5b8351811015612fdd576020818102858101820151908501909101516001600160a01b03881615612f8f575f828152602081815260408083206001600160a01b038c16845290915290205481811015612f69576040516303dee4c560e01b81526001600160a01b038a1660048201526024810182905260448101839052606481018490526084016106a5565b5f838152602081815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b03871615612fd3575f828152602081815260408083206001600160a01b038b16845290915281208054839290612fcd908490613a38565b90915550505b5050600101612ede565b50825160010361305d5760208301515f906020840151909150856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161304e929190918252602082015260400190565b60405180910390a450506124ca565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516130ac929190613b4e565b60405180910390a45050505050565b6001600160a01b038116811461240e575f80fd5b5f80604083850312156130e0575f80fd5b82356130eb816130bb565b946020939093013593505050565b6001600160e01b03198116811461240e575f80fd5b5f6020828403121561311e575f80fd5b8135613129816130f9565b9392505050565b5f60208284031215613140575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6131296020830184613147565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156131c3576131c3613187565b604052919050565b5f82601f8301126131da575f80fd5b8135602083015f806001600160401b038411156131f9576131f9613187565b50601f8301601f191660200161320e8161319b565b915050828152858383011115613222575f80fd5b828260208301375f92810160200192909252509392505050565b5f806040838503121561324d575f80fd5b8235915060208301356001600160401b03811115613269575f80fd5b613275858286016131cb565b9150509250929050565b80356001600160601b0381168114613295575f80fd5b919050565b5f805f805f8060c087890312156132af575f80fd5b863595506020870135945060408701356001600160401b038111156132d2575f80fd5b6132de89828a016131cb565b9450506132ed6060880161327f565b9598949750929560808101359460a0909101359350915050565b5f6001600160401b0382111561331f5761331f613187565b5060051b60200190565b5f82601f830112613338575f80fd5b813561334b61334682613307565b61319b565b8082825260208201915060208360051b86010192508583111561336c575f80fd5b602085015b83811015613389578035835260209283019201613371565b5095945050505050565b5f805f805f60a086880312156133a7575f80fd5b85356133b2816130bb565b945060208601356133c2816130bb565b935060408601356001600160401b038111156133dc575f80fd5b6133e888828901613329565b93505060608601356001600160401b03811115613403575f80fd5b61340f88828901613329565b92505060808601356001600160401b0381111561342a575f80fd5b613436888289016131cb565b9150509295509295909350565b5f8060408385031215613454575f80fd5b82356001600160401b03811115613469575f80fd5b8301601f81018513613479575f80fd5b803561348761334682613307565b8082825260208201915060208360051b8501019250878311156134a8575f80fd5b6020840193505b828410156134d35783356134c2816130bb565b8252602093840193909101906134af565b945050505060208301356001600160401b038111156134f0575f80fd5b61327585828601613329565b5f8151808452602084019350602083015f5b8281101561352c57815186526020958601959091019060010161350e565b5093949350505050565b602081525f61312960208301846134fc565b5f805f6060848603121561355a575f80fd5b83359250602084013561356c816130bb565b929592945050506040919091013590565b5f805f8060808587031215613590575f80fd5b843561359b816130bb565b9350602085013592506040850135915060608501356001600160401b038111156135c3575f80fd5b6135cf878288016131cb565b91505092959194509250565b801515811461240e575f80fd5b5f80604083850312156135f9575f80fd5b8235613604816130bb565b91506020830135613614816135db565b809150509250929050565b5f805f805f8060c08789031215613634575f80fd5b863595506020870135613646816130bb565b945060408701359350606087013592506136626080880161327f565b9598949750929591949360a090920135925050565b5f805f60608486031215613689575f80fd5b833592506020840135915060408401356136a2816130bb565b809150509250925092565b5f805f805f8060c087890312156136c2575f80fd5b86359550602087013594506040870135935060608701356001600160401b038111156136ec575f80fd5b6136f889828a016131cb565b9350506136626080880161327f565b5f8060408385031215613718575f80fd5b8235613723816130bb565b91506020830135613614816130bb565b5f805f805f60a08688031215613747575f80fd5b8535613752816130bb565b94506020860135613762816130bb565b9350604086013592506060860135915060808601356001600160401b0381111561342a575f80fd5b5f6020828403121561379a575f80fd5b8135613129816130bb565b5f80604083850312156137b6575f80fd5b50508035926020909101359150565b600181811c908216806137d957607f821691505b6020821081036137f757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b601f8211156106c557805f5260205f20601f840160051c8101602085101561384a5750805b601f840160051c820191505b818110156124ca575f8155600101613856565b81516001600160401b0381111561388257613882613187565b6138968161389084546137c5565b84613825565b6020601f8211600181146138c8575f83156138b15750848201515b5f19600385901b1c1916600184901b1784556124ca565b5f84815260208120601f198516915b828110156138f757878501518255602094850194600190920191016138d7565b508482101561391457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6020808252601a908201527f526f79616c74792063616e6e6f74206578636565642031303025000000000000604082015260600190565b602080825260149082015273496e76616c69642072656665727265722066656560601b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176105675761056761399c565b5f826139e157634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105675761056761399c565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60208284031215613a2d575f80fd5b8151613129816135db565b808201808211156105675761056761399c565b6001600160e01b031991909116815260200190565b5f60208284031215613a70575f80fd5b8151613129816130bb565b5f60208284031215613a8b575f80fd5b5051919050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f90613acb90830184613147565b979650505050505050565b5f60208284031215613ae6575f80fd5b8151613129816130f9565b6001600160a01b0386811682528516602082015260a0604082018190525f90613b1c908301866134fc565b8281036060840152613b2e81866134fc565b90508281036080840152613b428185613147565b98975050505050505050565b604081525f613b6060408301856134fc565b8281036020840152613b7281856134fc565b9594505050505056feeb1f47cf110dc185f6a18549d7b3f062743931524f31b57801c685b9571bf44ba16de828522b1eff49901fac4582913ef21d359f8d16dbb33c659b93bfc64539a264697066735822122097a8b5ff046d4bae0e1d119ee7603516dadab6fc8198570340b0c24e52890cd864736f6c634300081a0033000000000000000000000000aa8e23fb1079ea71e0a56f48a2aa51851d8433d00000000000000000000000007d9af5afab0d5479a073d8fdcb45faf6a70216f8