0x9bf8e18d52370744975ea8a8eb8e43ca1d35ec65d061c139feafde7c3c7db636
Safe Transaction on 0x82bf...e7a1
Overview
Transaction Data
0x8d80ff0a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000c16400000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac00000000000000000000000082bf455e9ebd6a541ef10b683de1edcaf05ce7a182bf455e9ebd6a541ef10b683de1edcaf05ce7a1abff4881d91664004af9487b000000000000000000000000000000000000000000000000000000000000000500000000000000b361194cfe6312ee3210d53c15aa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000614461ff715f82bf455e9ebd6a541ef10b683de1edcaf05ce7a1abff4881d91664004af9487b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000060d560a060405234801561000f575f5ffd5b506040516160b53803806160b583398101604081905261002e9161003f565b6001600160a01b031660805261006c565b5f6020828403121561004f575f5ffd5b81516001600160a01b0381168114610065575f5ffd5b9392505050565b6080516160006100b55f395f81816105c301528181610c8e01528181610f130152818161272d0152818161288301528181612a6d01528181612c990152613b6001526160005ff3fe608060405260043610610194575f3560e01c80637cf262bd116100df578063c39dba9d11610083578063c39dba9d146104a8578063c79ee60d146104dc578063d0c93a7c14610509578063d2c725e01461051d578063d61549c414610547578063dc4c90d314610566578063f23a6e611461057a578063fd34c75e146105b2575f5ffd5b80637cf262bd146103745780638129fc1c146103b357806392b888ae146103c7578063a93c1c6b146103db578063ac9650d8146103fa578063b7e0ca961461041a578063be22465d14610463578063c25813aa14610489575f5ffd5b80634c2de0f9116101465780634c2de0f9146102b25780634d7b0900146102c5578063537e4ab7146102e657806353aad1d9146102fa5780636e29ebfb1461030e578063738e571c1461032d57806374564063146103415780637594cdc314610360575f5ffd5b8063011492281461019857806305ecd003146101d1578063182148ef146101f85780632a390be61461021a5780633a5c5000146102515780633e0dc34e1461027257806348c707c41461029e575b5f5ffd5b3480156101a3575f5ffd5b506101b76101b2366004614e57565b6105e5565b6040516101c8959493929190614eef565b60405180910390f35b3480156101dc575f5ffd5b506101e56106ae565b60405160029190910b81526020016101c8565b348015610203575f5ffd5b5061020c610729565b6040516101c8929190614fb3565b348015610225575f5ffd5b50610239610234366004614fc6565b610753565b6040805192835260029190910b6020830152016101c8565b34801561025c575f5ffd5b5061027061026b366004614fdd565b6107eb565b005b34801561027d575f5ffd5b5061028661081a565b6040516001600160401b0390911681526020016101c8565b3480156102a9575f5ffd5b50610270610825565b6102706102c0366004614ffd565b6108db565b3480156102d0575f5ffd5b506102d9610c5f565b6040516101c891906150b1565b3480156102f1575f5ffd5b50610270610c6a565b348015610305575f5ffd5b506101e5610c8b565b348015610319575f5ffd5b50610270610328366004614fdd565b610ce0565b348015610338575f5ffd5b50610270610d29565b34801561034c575f5ffd5b5061027061035b3660046150c5565b610d3e565b34801561036b575f5ffd5b506102d9610d7b565b34801561037f575f5ffd5b5061039361038e366004615134565b610d85565b6040805194855260208501939093529183015260608201526080016101c8565b3480156103be575f5ffd5b50610270610e4c565b3480156103d2575f5ffd5b506102d9610fb1565b3480156103e6575f5ffd5b506102706103f5366004614fdd565b610fbc565b61040d61040836600461516b565b610fe6565b6040516101c891906151a9565b348015610425575f5ffd5b5061042e6110f2565b60408051600296870b815294860b602086015292850b9284019290925290920b6060820152608081019190915260a0016101c8565b34801561046e575f5ffd5b5061047761111b565b60405160ff90911681526020016101c8565b348015610494575f5ffd5b506102706104a336600461526d565b611130565b3480156104b3575f5ffd5b506104c76104c2366004615355565b61151d565b604080519283526020830191909152016101c8565b3480156104e7575f5ffd5b506104fb6104f6366004615355565b611618565b6040519081526020016101c8565b348015610514575f5ffd5b506101e5611643565b348015610528575f5ffd5b506040515f516020615fab5f395f51905f525c151581526020016101c8565b348015610552575f5ffd5b50610270610561366004615134565b611664565b348015610571575f5ffd5b506102d96116b1565b348015610585575f5ffd5b506105996105943660046153b2565b6116bc565b6040516001600160e01b031990911681526020016101c8565b3480156105bd575f5ffd5b506102d97f000000000000000000000000000000000000000000000000000000000000000081565b5f5f60608060606105f4614d80565b5f6105fd610c8b565b90506106108b8a8a60018e8660016116ce565b9096509350915061061f610fb1565b6001600160a01b0316635e14f9fc868b8b856040518563ffffffff1660e01b815260040161065094939291906154a2565b5f60405180830381865afa15801561066a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261069191908101906154fe565b8251602090930151929c929b509499509397509095509350505050565b5f6106b7610fb1565b6001600160a01b031663451cead55f546040518263ffffffff1660e01b81526004016106e591815260200190565b602060405180830381865afa158015610700573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072491906155a7565b905090565b365f5f6107346119fd565b90505f6107428260586155d6565b946001193687900301945092505050565b5f5f61075d610c8b565b9050610767610fb1565b5f54604051630d18a9e760e31b8152600284900b60048201526024810191909152604481018590526001600160a01b0391909116906368c54f3890606401602060405180830381865afa1580156107c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e491906155e9565b9150915091565b814210806107f857508042115b156108165760405163637910d560e11b815260040160405180910390fd5b5050565b5f6107246050611a0e565b61082d611a26565b610835611a5c565b5f61083e610c8b565b90505f610849610fb1565b6001600160a01b03166364af311a5f54846040518363ffffffff1660e01b815260040161088392919091825260020b602082015260400190565b6040805180830381865afa15801561089d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c19190615600565b91505080156108cf575f8190555b50506108d9611b1b565b565b6108e3611a26565b5f6108ec6106ae565b90505f6108f7610c8b565b90505f5f5f6109078b8b8b611b2d565b5f5f61091286611c7d565b60408051600480825260a082019092529395509093505f9291506020820160808036833701905050905082815f8151811061094f5761094f615593565b602002602001019060020b908160020b81525050878160018151811061097757610977615593565b600292830b6020918202929092010152815183918391811061099b5761099b615593565b602002602001019060020b908160020b8152505086816003815181106109c3576109c3615593565b60029290920b602092830291909101909101526109ea8e5f8f8f8b86600162989680611d0b565b905190945092508a9150889050828403610ba0575f610a085f610753565b5090505f610a1a82603c1c611fff1690565b61ffff16905080610a2f8a8a0360020b611deb565b1315610a4e576040516388cce42960e01b815260040160405180910390fd5b50508b8b60018403818110610a6557610a65615593565b905060200201359450808203610af4575f610aa68d8d604051602001610a8c92919061562c565b604051602081830303815290604052805160209091012090565b90505f610abf8c8c604051602001610a8c92919061562c565b9050808214610ae157604051634cf43be760e11b815260040160405180910390fd5b5050610aef8d868989611e09565b610b7c565b806001018203610b4357610b0785611ea5565b1580610b195750610b1785611eda565b155b15610b3757604051633b90fbed60e11b815260040160405180910390fd5b610aef8d868989611f34565b805f03610b6357604051632a23f1ad60e01b815260040160405180910390fd5b604051634cf43be760e11b815260040160405180910390fd5b6001600160801b0388161515610b998e8c8c62989680855f6120e5565b5050610c1f565b835f03610c0657808203610bd55760405163cdef092d60e01b8152600481810186905260248201526044015b60405180910390fd5b8815610bf457604051634cf43be760e11b815260040160405180910390fd5b610c018d8d8d8a8a6121e8565b610c1f565b604051632a23f1ad60e01b815260040160405180910390fd5b50610c479050338e8e629896805f610c378c60801c90565b6001600160801b0316115f6120e5565b505050505050610c55611b1b565b5050505050505050565b5f61072460146126ac565b610c726126c4565b610c875f54600360761b1916600360761b0190565b5f55565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b9068a61610cc3610729565b6040518363ffffffff1660e01b81526004016106e5929190614fb3565b5f5f610ceb3361151d565b9150915083821080610cfc57508281105b15610d235760405163cdef092d60e01b81525f600482018190526024820152604401610bcc565b50505050565b610d316126c4565b5f54600360761b19165f55565b610d466126fd565b5f610d505f610753565b509050610d73858585610d6985605f1c6303ffffff1690565b86600f87166120e5565b505050505050565b5f6107245f6126ac565b5f5f5f5f5f610d92611643565b9050610d9e818861566e565b60020b151580610db95750610db3818761566e565b60020b15155b80610dca57508560020b8760020b12155b15610de857604051630abbecb360e11b815260040160405180910390fd5b610df387875f61272a565b9450610e018787600161272a565b93505f610e108888845f6127ce565b5f818152600360205260408120549550909150610e3089898560016127ce565b5f90815260036020526040902054969995985093965050505050565b5f5415610e6b5760405162dc149f60e41b815260040160405180910390fd5b5f610e74610c8b565b90505f604282901b623fffff60421b16602c83901b6803fffff0000000000016601684901b650fffffc0000016623fffff851601010190506b200e00200e00200e00000000627ac85360d11b01606083901b623fffff60601b166bffffffffffffffffffffffff60781b607884901b166001600160e81b03194260e21b160101015f557300000000000041fe14ce3c2392337ce501ae8328631f87c7d77f0000000000000000000000000000000000000000000000000000000000000000610f3a610d7b565b610f42610c5f565b610f4a6116b1565b60405160e086901b6001600160e01b03191681526001600160a01b0394851660048201529284166024840152908316604483015290911660648201526084015f6040518083038186803b158015610f9f575f5ffd5b505af4158015610d73573d5f5f3e3d5ffd5b5f61072460286126ac565b814310806107f85750804311156108165760405163637910d560e11b815260040160405180910390fd5b6060816001600160401b038111156110005761100061536e565b60405190808252806020026020018201604052801561103357816020015b606081526020019060019003908161101e5790505b5090505f5b8083146110eb575f803086868581811061105457611054615593565b9050602002810190611066919061568f565b6040516110749291906156d1565b5f60405180830381855af49150503d805f81146110ac576040519150601f19603f3d011682016040523d82523d5f602084013e6110b1565b606091505b5091509150816110c357805160208201fd5b808484815181106110d6576110d6615593565b60209081029190910101525050600101611038565b5092915050565b5f5f5f5f5f6110ff610c8b565b945061110a85611c7d565b5f5497989297919650945092509050565b5f5f6111265f610753565b50600f1692915050565b611138611a26565b5f7f8388eb09a88e4fb4f9afba3b0c27efcdbbb27a5f84dbfe712cc08faf91ad94a55c8161116584610753565b909350905081600f0b5f036111965761118f600282900b6111875f600161285c565b9060801b0190565b91506111c4565b6111c18160020b6111876111b7846111ae8760801d90565b0360020b611deb565b855b5f910161285c565b91505b505f5b808c14611474575f8d8d838181106111e1576111e1615593565b9050602002013590506111f261081a565b6001600160401b0316816001600160401b031614611223576040516367d25fd160e11b815260040160405180910390fd5b335f908152600460209081526040808320848452909152902054611245614d80565b89898581811061125757611257615593565b9050606002015f6003811061126e5761126e615593565b60200201602081019061128191906156e0565b60020b815289898581811061129857611298615593565b9050606002016001600381106112b0576112b0615593565b6020020160208101906112c391906156e0565b60020b60208201526001600f871611156113005760208101518151600291820b910b1315611300576020810180518251600290810b909252900b81525b5f825f036113ab576002600f8816111561132d576040516388cce42960e01b815260040160405180910390fd5b5f8b8b8781811061134057611340615593565b90506060020160026003811061135857611358615593565b60200201602081019061136b91906156e0565b90506113a1858f8f8981811061138357611383615593565b9050602002016020810190611398919061570f565b8333878d612876565b9250611445915050565b826001600160801b0381165f036113d4576040516217aa3960e31b815260040160405180910390fd5b8d8d878181106113e6576113e6615593565b90506020020160208101906113fb919061570f565b6001600160801b0316816001600160801b03160361142f5761141b610c8b565b915061142a3386838b86612a01565b611443565b61143e8582853360018d612a58565b935050505b505b6114638160020b61118761145d846111ae8b60801d90565b896111b9565b9550846001019450505050506111c7565b5061148382603c1c611fff1690565b60020261ffff166114918290565b600f0b13156114b3576040516365f2dcd360e11b815260040160405180910390fd5b7f8388eb09a88e4fb4f9afba3b0c27efcdbbb27a5f84dbfe712cc08faf91ad94a581815d505f6114f9338c8c6114ef87605f1c6303ffffff1690565b89600f89166120e5565b90508015611506575f8190555b505050611511611b1b565b50505050505050505050565b5f5f5f611528610d7b565b90505f611533610c5f565b6040516302c62fa160e41b81529091506001600160a01b03831690632c62fa10906115629088906004016150b1565b602060405180830381865afa15801561157d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a191906155e9565b6040516302c62fa160e41b81529094506001600160a01b03821690632c62fa10906115d09088906004016150b1565b602060405180830381865afa1580156115eb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160f91906155e9565b92505050915091565b5f6116216126fd565b506001600160a01b0381165f9081526005602052604090205460f81c5b919050565b5f60306116506050611a0e565b6001600160401b0316901c61ffff16905090565b5f61166d610c8b565b90508260020b8160020b128061168857508160020b8160020b135b156116ac57604051631863a90360e21b8152600282900b6004820152602401610bcc565b505050565b5f610724603c6126ac565b63f23a6e6160e01b5b95945050505050565b6116d6614d80565b60608087806001600160401b038111156116f2576116f261536e565b60405190808252806020026020018201604052801561171b578160200160208202803683370190505b509250841561176957806001600160401b0381111561173c5761173c61536e565b604051908082528060200260200182016040528015611765578160200160208202803683370190505b5091505b50895f5b808a146119ee575f8b8b8381811061178757611787615593565b6001600160a01b0386165f908152600460209081526040808320938202959095013580835292905292909220549192508190506001600160801b03165f036117e1576040516217aa3960e31b815260040160405180910390fd5b808684815181106117f4576117f4615593565b602002602001018181525050505f5f61182f8361182789878151811061181c5761181c615593565b602002602001015190565b878f8e612c0b565b915091505f5f61183e85612ee7565b90505f5b8181146119b7576118538682612f21565b60020b156119af576118658682612f38565b5f03611964578d611912575f61187b8783612f4a565b90505f6118888884612f9e565b50505f83815260036020908152604080832054600290925282205492935090916118e19184918b88600481106118c0576118c0615593565b60200201518b89600481106118d7576118d7615593565b6020020151612ff0565b90506118f5818f5f5b6020020151906130c7565b8e528e1561190a576119078682613107565b95505b5050506119af565b61193385826004811061192757611927615593565b60200201518c5f6118ea565b8b528b1561195f5761195c85826004811061195057611950615593565b60200201518490613107565b92505b6119af565b61198c85826004811061197957611979615593565b60200201518c6001602002015190613183565b60208c01528b156119af576119ac85826004811061195057611950615593565b92505b600101611842565b508a156119de57818887815181106119d1576119d1615593565b6020026020010181815250505b856001019550505050505061176d565b50509750975097945050505050565b600119368181013560f01c90030190565b5f5f611a186119fd565b929092013560c01c92915050565b5f516020615fab5f395f51905f52805c159030905d80611a595760405163558a1e0360e11b815260040160405180910390fd5b50565b611a6660016131e3565b6001600160a01b0316639198e515336040518263ffffffff1660e01b8152600401611a9191906150b1565b5f604051808303815f87803b158015611aa8575f5ffd5b505af1158015611aba573d5f5f3e3d5ffd5b50505050611ac75f6131e3565b6001600160a01b0316639198e515336040518263ffffffff1660e01b8152600401611af291906150b1565b5f604051808303815f87803b158015611b09575f5ffd5b505af1158015610d23573d5f5f3e3d5ffd5b5f5f516020615fab5f395f51905f525d565b60405163202a00a960e01b815281905f9073000000000000334bbd65c195581cf59ecf3159329063202a00a990611b6a908790869060040161572a565b602060405180830381865af4158015611b85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba99190615764565b611bc6576040516315e8d02d60e11b815260040160405180910390fd5b5f611bcf61081a565b90505f5b838114611c45575f868683818110611bed57611bed615593565b905060200201359050826001600160401b0316611c078290565b6001600160401b031614611c2e576040516367d25fd160e11b815260040160405180910390fd5b611c3a848260016131f9565b935050600101611bd3565b506001600160a01b0386165f908152600560205260409020548214610d7357604051634cf43be760e11b815260040160405180910390fd5b5f5f5f611c88610fb1565b5f54604051624ee92960e71b8152600287900b600482015260248101919091526001600160a01b039190911690632774948090604401608060405180830381865afa158015611cd9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cfd919061577f565b509196909550909350915050565b5f5f5f611d1d8b8a8a885f8c5f6116ce565b50909250905060ff8a1615611d76578051632710271090611d5690611d4c9084905f9061181c5761181c615593565b825f5f5f5f613279565b825f81518110611d6857611d68615593565b602002602001018181525050505b5f5f5b87518114611ddb57611dc78d898381518110611d9757611d97615593565b60200260200101518d8d87895f60028110611db457611db4615593565b60200201518a600160200201518d6132e1565b15611dd3578160010191505b600101611d79565b509b9a5050505050505050505050565b5f5f8213611e0157611dfc826157cf565b611e03565b815b92915050565b611e14846001613381565b611e1e845f613381565b5f611e285f610753565b506001600160a01b0386165f9081526004602090815260408083208884529091528120549192506001600160801b0382169003611e77576040516217aa3960e31b815260040160405180910390fd5b611e848686838587612a01565b5f611e90875f876133e3565b9050611e9c878261345b565b50505050505050565b5f611eb1826003612f38565b611ebc836002612f38565b611ec7846001612f38565b611ed1855f612f38565b01010192915050565b5f5f611ee583612ee7565b90505f5b818114611f2b57611efa8482612f38565b6001148015611f145750611f0e8482612f21565b60020b15155b15611f23575060019392505050565b600101611ee9565b505f9392505050565b6001600160a01b0384165f90815260046020908152604080832086845290915281205490816001600160801b0381168203611f81576040516217aa3960e31b815260040160405180910390fd5b611f89610fb1565b60405163e35bff3160e01b8152600286810b600483015287900b602482015260448101889052606481018390526001600160a01b03919091169063e35bff3190608401602060405180830381865afa158015611fe7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200b91906155e9565b915050612019866001613381565b612023865f613381565b61202b614d80565b61203a6001620d89e7196157e9565b60020b815261204d620d89e8600161580e565b60020b60208201525f61205f81610753565b5090506120718785848b600186612a58565b50505050505f6120828783876133e3565b905061208e878261345b565b85876001600160a01b0316336001600160a01b03167f0678d01a4d4354dc7b249ea5bc59dcd8ce288bfb79e3522e80134a85807f35a2856040516120d491815260200190565b60405180910390a450505050505050565b5f6120f1878787611b2d565b5f6120fa610c8b565b90505f6060612107610fb1565b5f54604051632a99523160e01b8152600286900b6004820152602481019190915260ff871660448201526001600160a01b039190911690632a995231906064015f60405180830381865afa158015612161573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121889190810190615833565b9250905087156121db575f6121a98b878c8c88878d8f63ffffffff16611d0b565b82519091508082146121d85760405163cdef092d60e01b81526004810183905260248101829052604401610bcc565b50505b5098975050505050505050565b5f5f5f6121f3614d80565b5f876001600160401b0381111561220c5761220c61536e565b604051908082528060200260200182016040528015612235578160200160208202803683370190505b5090506122488a8a8a60015f8b5f6116ce565b509092509050612256610fb1565b6001600160a01b031663a7a5fd9182898d8d8d885f60200201518960016020020151612280610d7b565b612288610c5f565b6040518a63ffffffff1660e01b81526004016122ac999897969594939291906158d6565b606060405180830381865afa1580156122c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122eb9190615948565b5090945092506122fc8a6001613381565b6123068a5f613381565b5f60606123328c61231c6001620d89e7196157e9565b61232a620d89e8600161580e565b5f8f8f613496565b80925081935050505f5f612378858e8e808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506135fa92505050565b9050612382610fb1565b6001600160a01b031663b013993d898961239b8f6136e7565b8a5160405160e086901b6001600160e01b0319168152600481019490945260248401929092526001600160a01b0316604483015260648201889052608482015260a4810184905260c4016040805180830381865afa1580156123ff573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124239190615973565b809350819a505050505f8d90505f8b90505f8e8e808060200260200160405190810160405280939291908181526020018383602002808284375f920182905250939450839250606091506124779050610fb1565b6001600160a01b031663e84cfee0858a8a6124918a6136e7565b6040518563ffffffff1660e01b81526004016124b094939291906159b7565b5f60405180830381865afa1580156124ca573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124f19190810190615a56565b919450925090506125028e84613107565b9d507300000000000041fe14ce3c2392337ce501ae832863d5f290bc878685858d61252b610d7b565b612533610c5f565b60036040518963ffffffff1660e01b8152600401612558989796959493929190615b98565b5f6040518083038186803b15801561256e575f5ffd5b505af4158015612580573d5f5f3e3d5ffd5b5050505050505050505050505050505050612599610d7b565b6001600160a01b031663e81c1054343389856040518563ffffffff1660e01b81526004016125c993929190615c49565b5f604051808303818588803b1580156125e0575f5ffd5b505af11580156125f2573d5f5f3e3d5ffd5b50505050506125ff610c5f565b6001600160a01b031663e81c105433886126198560801d90565b6040518463ffffffff1660e01b815260040161263793929190615c49565b5f604051808303815f87803b15801561264e575f5ffd5b505af1158015612660573d5f5f3e3d5ffd5b50506040518381526001600160a01b03891692503391507f6f365e31bb09bf241744307ce951bb36bbc5d4a332da9714f77b420a84962de89060200160405180910390a3505050505050565b5f5f6126b66119fd565b929092013560601c92915050565b6126cc610fb1565b6001600160a01b0316336001600160a01b0316146108d9576040516377b6878160e11b815260040160405180910390fd5b5f516020615fab5f395f51905f525c156108d95760405163558a1e0360e11b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166377645261612762610729565b308689896040518763ffffffff1660e01b815260040161278796959493929190615c70565b602060405180830381865afa1580156127a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c691906155e9565b949350505050565b5f80836127db87876157e9565b6127e59190615cb5565b90506110008160020b1261280c57604051630abbecb360e11b815260040160405180910390fd5b5f61281782866139f8565b5090505f612825828961580e565b60405160e882811b602083015285901b60238201526026810187905290915061285090604601610a8c565b98975050505050505050565b6001600160801b0319821691016001600160801b03160190565b5f5f612880614d9e565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166341a058ef6128b8610729565b8d8d8b5f60200201518c600160200201516040518763ffffffff1660e01b81526004016128ea96959493929190615ced565b60c0604051808303815f875af1158015612906573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292a9190615d32565b9450909250905061293f858b848c8c8c613a3b565b5f61294d8b8b8a858a613d07565b955090505f6129758b838742438d6001602002015160020b8e5f602002015160020b13613279565b90508060045f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f8e81526020019081526020015f20819055508b896001600160a01b03167f8468ab73e17d91b26a991dd0b6b71dc7faff1b72750fd07ef2cc45595d09501d836040516129ea91815260200190565b60405180910390a350505050965096945050505050565b612a09614d9e565b5f612a2c8787848888612a27600160028b810b901b810160801b0190565b613da6565b509050612a3f875f8080858960016142c0565b50610c55875f5f5f612a518660801d90565b895f6142c0565b5f612a61614d9e565b5f612a6a614d9e565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d3a26d8a612aa2610729565b8e8e8e5f60200201518f600160200201516040518763ffffffff1660e01b8152600401612ad496959493929190615ced565b60c0604051808303815f875af1158015612af0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b149190615d32565b945090925090505f612b3a898d858e8b8d612b2f575f612b32565b60015b600f0b613da6565b955090505f80612b4b8e8e83614361565b915091508d8b6001600160a01b03167fd7b5aa501d6c32aac0775207ad2e590a1ef403c1c04f5ec35e0f3fa31695e0318f8a604051612b8b929190615da9565b60405180910390a3885f612ba58d858589898760016142c0565b9050612bb18a8261285c565b9950505f612be88d612bc38660801d90565b612bcd8660801d90565b612bd78a60801d90565b612be18a60801d90565b875f6142c0565b9050612bf68a8260801b0190565b99505050505050505096509650969350505050565b612c13614d9e565b612c1b614dbc565b5f612c2588612ee7565b90505f5b818114612edb575f612c3b8a83612f38565b9050612c478a83612f21565b60020b15801590612c5f57508060011480612c5f5750865b15612ed2575f612c708b848c6143ba565b90505f612c7c8c614426565b60ff1690505f612c8c8d86614437565b9050886001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166377880f15612cc6610729565b3086612cd28a60e81c90565b612cdc8b60d01c90565b888d8c6040518a63ffffffff1660e01b8152600401612d0399989796959493929190615dc6565b6040805180830381865afa158015612d1d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d419190615e22565b6001600160801b039182169116898860048110612d6057612d60615593565b60200201518a8960048110612d7757612d77615593565b6020020151600160200201828152508281525050505050505f60015f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f8d81526020019081526020015f208460048110612dd357612dd3615593565b01549050612e76600160401b836001600160801b0316612df38460801c90565b6001600160801b0316898860048110612e0e57612e0e615593565b602002015160016020020151030281612e2957612e2961565a565b04611187600160401b856001600160801b0316856001600160801b03168b8a60048110612e5857612e58615593565b602002015151030281612e6d57612e6d61565a565b5f91900461285c565b878560048110612e8857612e88615593565b6020020152506001829003612ed057612eb8868460048110612eac57612eac615593565b60200201515f90613183565b868460048110612eca57612eca615593565b60200201525b505b50600101612c29565b50509550959350505050565b5f72fe0000000000fe0000000000fe0000000000fe604083901c165b6001603083021b8110612f1b57816001019150612f03565b50919050565b5f6110006064603084020184901c5b069392505050565b5f60026048603084020184901c612f30565b5f612f97612f5d8484603002604c011c90565b612f678585612f21565b612f718686614437565b60405160e893841b60208201529190921b60238201526026810191909152604601610a8c565b9392505050565b5f80808080612fad8787614449565b90925090505f612fc78383612fc28b8b614437565b61272a565b9050809450612fd68160801c90565b93508385016001600160801b031695505050509250925092565b805160208201515f91600160401b6001600160801b038716909103880281900491608087901c900388020461285061307d821561302d5782613030565b5f195b61303a8a60801c90565b6001600160801b031661304d8960801c90565b6001600160801b031602816130645761306461565a565b0461306f8860801c90565b6001600160801b0316614480565b6130b8841561308c578461308f565b5f195b8a6001600160801b0316896001600160801b031602816130b1576130b161565a565b048861306f565b6001600160801b031690614495565b818101828110806130e95750826001600160801b0316816001600160801b0316105b15611e0357604051633486405d60e21b815260040160405180910390fd5b5f5f6131138360801d90565b600f0b6131208560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b14158061314c57508181600f0b14155b1561316a57604051633486405d60e21b815260040160405180910390fd5b61317883611187878461285c565b979650505050505050565b5f5f61318f8360801d90565b600f0b61319c8560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b14158061314c57508181600f0b1461316a57604051633486405d60e21b815260040160405180910390fd5b5f816131f157611dfc610c5f565b611e03610d7b565b5f5f6132068585856144a6565b90505f61321285612ee7565b90508060ff165f0361323757604051634e6c97d960e11b815260040160405180910390fd5b5f846132505761324b8260f889901c615e4f565b61325e565b61325e8260f889901c615e68565b60f81b6001600160f81b031916929092019695505050505050565b5f6001600160801b03871663ffffffff60801b608088901b1662ffffff60a01b60a088901b1663ffffffff60b81b60b888901b16647fffffffff60d81b60d888901b1660ff876132c9575f6132cc565b60015b60ff16901b0101010101979650505050505050565b5f6132ea610fb1565b6001600160a01b0316634dec783b8689898c8e8a8a613307610d7b565b61330f610c5f565b8c6040518b63ffffffff1660e01b81526004016133359a99989796959493929190615e81565b602060405180830381865afa158015613350573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133749190615764565b9998505050505050505050565b5f61338b826131e3565b6040516317066a5760e21b81529091506001600160a01b03821690635c19a95c906133ba9086906004016150b1565b5f604051808303815f87803b1580156133d1575f5ffd5b505af1158015611e9c573d5f5f3e3d5ffd5b5f6133ec610fb1565b6001600160a01b03166374245ed8858585613405610d7b565b61340d610c5f565b60405160e087901b6001600160e01b03191681526001600160a01b039586166004820152602481019490945260029290920b604484015283166064830152909116608482015260a401612787565b61346a8282600f0b600161455c565b613481826134788360801d90565b600f0b5f61455c565b61348c8260016145c9565b610816825f6145c9565b5f6060826001600160401b038111156134b1576134b161536e565b6040519080825280602002602001820160405280156134ea57816020015b6134d7614d9e565b8152602001906001900390816134cf5790505b5090505f6134f75f610753565b5090505f5b8085146135ed576001600160a01b038a165f908152600460205260408120613549908289898681811061353157613531615593565b9050602002013581526020019081526020015f205490565b9050806001600160801b03165f03613573576040516217aa3960e31b815260040160405180910390fd5b61357b614d80565b60028b810b82528a900b60208201525f8c6135b28a8a878181106135a1576135a1615593565b905060200201358585848f8b612a58565b508887815181106135c5576135c5615593565b602090810291909101015291506135dc8883613107565b9750846001019450505050506134fc565b5050965096945050505050565b5f5f5b835181146110eb575f83828151811061361857613618615593565b602002602001015190505f85838151811061363557613635615593565b602002602001015190505f6136478290565b90505f61365384612ee7565b90505f5b8181146136d7576136688582612f21565b60020b158015613681575061367d8582612f38565b6001145b156136cf575f6136938685845f614602565b905061369f8683614437565b5f036136b6576136af88826146bc565b97506136cd565b6136ca6136c38260801c90565b8990614495565b97505b505b600101613657565b50505050508060010190506135fd565b5f5f5f8360020b126136fc578260020b613703565b8260020b5f035b9050620d89e8811115613729576040516333a3bdff60e21b815260040160405180910390fd5b5f816001165f0361373e57600160801b613750565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03169050600282161561377a576ffff97272373d413259a46990580e213a0260801c5b6004821615613799576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156137b8576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156137d7576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156137f6576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613815576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613834576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613854576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613874576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613894576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156138b4576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156138d4576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156138f4576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613914576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613934576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613955576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613975576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613994576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156139b1576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156139d057805f19816139cc576139cc61565a565b0490505b6401000000008106156139e45760016139e6565b5f5b60ff16602082901c0192505050919050565b5f806002613a068486615ef1565b613a109190615cb5565b613a2f613a1d8587615f10565b62ffffff166002808204910615150190565b915091505b9250929050565b613a5481866001613a4f8a60791c607f1690565b6146d8565b5f5b613a5f86612ee7565b8114611e9c57613a6f8682612f21565b60020b15613cff575f613a828783612f38565b90505f613ad088848415613ab757613ab28862ffffff16613aa88e60491c623fffff1690565b62ffffff16614480565b614746565b613ac68c60491c623fffff1690565b62ffffff16614746565b90505f613add8985612f4a565b9050613b19888560048110613af457613af4615593565b602002015160035f8481526020019081526020015f20546130c790919063ffffffff16565b5f82815260036020526040812091909155613b358a868a6143ba565b90505f8080613b448d89614437565b90505f613b508e614426565b60ff169050876001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166377880f15613b8d610729565b3087613b998c60e81c90565b613ba38d60d01c90565b627fffff898b6040518a63ffffffff1660e01b8152600401613bcd99989796959493929190615dc6565b6040805180830381865afa158015613be7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c0b9190615e22565b6001600160801b039182169650169350613c2b9250849150839050614495565b60015f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8e81526020019081526020015f208860048110613c6e57613c6e615593565b01555f869003613cf8575f848152600260205260409020546001600160801b038416808703613ce688858402608086901c84020181613caf57613caf61565a565b048983866001600160801b0316028589020181613cce57613cce61565a565b046001600160801b031661449590919063ffffffff16565b5f888152600260205260409020555050505b5050505050505b600101613a56565b5f5f5f5f613d1789896001614361565b915091505f5f613d3289613d288690565b858b8b60016147d6565b9096508692509050613d44858261285c565b945050505f5f613d7389613d588660801d90565b613d628660801d90565b613d6c8c60801d90565b8b5f6147d6565b65ffffffff0000601083901b1697909701969092509050613d96858260801b0190565b9450505050509550959350505050565b5f613daf614d9e565b613db7614dbc565b613df088878b6001613dc98960801d90565b600f0b15613de7576002613ddd8a60801d90565b600f0b901d612c0b565b627fffff612c0b565b90925090505f5b613e0089612ee7565b811461426657613e108982612f21565b60020b1561425e575f838260048110613e2b57613e2b615593565b602002015190505f613e3d8b84612f4a565b90505f613e7a8b8560048110613e5557613e55615593565b602002015160035f8581526020019081526020015f20546130c790919063ffffffff16565b9050613e868c85612f38565b600103613eb45787600f0b15613ea357613ea08184613183565b90505b613ead8784613107565b9650614094565b613ebe8860801d90565b600f0b1580613ed55750336001600160a01b038e16145b15614094575f5f5f613ee88f888f6143ba565b9050806001600160801b03169250613f0a8f88613ac68f60491c623fffff1690565b9150505f613f188b60801d90565b600f0b15613f265781613f2a565b8282015b5f86815260026020526040812054919250613f548387848b8e8e600481106118d7576118d7615593565b9050613f60868261487f565b9550613f6c8c82613107565b9b50808b8a60048110613f8157613f81615593565b602002015289895f869003613fdd57613fd88c8260048110613fa557613fa5615593565b6020020151600160200201518d8360048110613fc357613fc3615593565b6020020151516001600160801b031690614495565b61407e565b61407e86614034613fee8d60801d90565b600f0b600160401b028a86866004811061400a5761400a615593565b60200201516001602002015102896140228a60801c90565b6001600160801b03160203015f6148be565b816140415761404161565a565b04876140718d600f0b600160401b028b87876004811061406357614063615593565b602002015151028a8a614022565b81613cce57613cce61565a565b5f8a815260026020526040902055505050505050505b5f8281526003602052604090208190556140ae8860801d90565b600f0b5f036140f1576001600160a01b038d165f9081526001602090815260408083208f8452909152812085600481106140ea576140ea615593565b015561425a565b6140fb8c85612f38565b1515806141105750336001600160a01b038e16145b1561425a5761413286856004811061412a5761412a615593565b602002015190565b600f0b151580614163575061415d86856004811061415257614152615593565b602002015160801d90565b600f0b15155b1561425a576141b185856004811061417d5761417d615593565b6020020151600160200201516141ab87876004811061419e5761419e615593565b6020020151515f906146bc565b90614495565b60015f8f6001600160a01b03166001600160a01b031681526020019081526020015f205f8e81526020019081526020015f2085600481106141f4576141f4615593565b01558b6001600160a01b038e167f4358c577d4c62044fa8caea3ad9778fe842e777c7903f2452d20661f6ff250b78689816004811061423557614235615593565b6020020151604051614251929190918252602082015260400190565b60405180910390a35b5050505b600101613df7565b506142718460801d90565b600f0b5f036142b4576001600160a01b0389165f9081526004602090815260408083208b845290915281208190556142b4908a908a90613a4f8960791c607f1690565b50965096945050505050565b5f5f6142cb836131e3565b604051630e9f38b760e11b81526001600160a01b038b81166004830152600f8b810b60248401528a810b604484015289810b606484015288900b608483015260a4820187905291925090821690631d3e716e9060c4016020604051808303815f875af115801561433d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133749190615f3f565b5f5f5f61436d86612ee7565b90505f5b8181146143b0575f5f6143868989858a6148cc565b90925090506143958683613107565b95506143a18582613107565b94508260010192505050614371565b5050935093915050565b5f80806143c78686614449565b90925090505f6143d7878761496d565b6143ea906001600160801b038716615f58565b90506143f6878761497f565b5f0361441157614407838383614991565b9350505050612f97565b614407838383614a33565b5050509392505050565b5f610100602883901c5b0692915050565b5f60026049603084020184901c612f30565b5f8061447561445d8585603002604c011c90565b6144678686612f21565b61447087614a67565b614a76565b909590945092505050565b5f81831061448e5781612f97565b5090919050565b60801b6001600160801b0319160190565b5f5f6144be84604051602001610a8c91815260200190565b905060016001607c1b0380821690607c83901c81169087165f866144f457603b6001607c1b038406603b6001607c1b03036144f6565b835b90505f603b6001607c1b038284089050607c8a901c60016001607c1b03165f89614534576102676001607c1b0386066102676001607c1b0303614536565b855b90505f6102676001607c1b03828408607c1b939093019c9b505050505050505050505050565b5f614566826131e3565b604051633bec831b60e01b81526001600160a01b0386811660048301523360248301526044820186905291925090821690633bec831b906064015f604051808303815f87803b1580156145b7575f5ffd5b505af1158015610c55573d5f5f3e3d5ffd5b5f6145d3826131e3565b6040516374a8f10360e01b81529091506001600160a01b038216906374a8f103906133ba9086906004016150b1565b5f8080806146108887612f21565b60020b151590508061462b576002606460308802011b880197505b5f61463789888a6143ba565b90506146438988612f38565b15801561464d5750855b80614669575061465d8988612f38565b15801590614669575085155b80614672575081155b156146925761468081614a94565b935061468b81614afa565b92506146a9565b61469b81614b39565b93506146a681614ba6565b92505b6133746001600160801b03851684614495565b81016001600160801b03166001600160801b0319919091160190565b6001600160a01b0384165f908152600560205260408120546146fb9085856131f9565b90508160ff1660f882901c111561472557604051630ed7e77760e01b815260040160405180910390fd5b6001600160a01b039094165f90815260056020526040902093909355505050565b5f5f5f6147538686612f9e565b9194506001600160801b03908116935016905081158015614772575080155b1561477e575050612f97565b815f0361479e5760405163039ac17560e51b815260040160405180910390fd5b5f826127108302816147b2576147b261565a565b0490508481111561441c57604051631d43cae160e11b815260040160405180910390fd5b5f5f5f6147e2846131e3565b604051633518694360e01b81526001600160a01b038b81166004830152600f8b810b60248401528a810b604484015289900b6064830152608482018890529192509082169063351869439060a40160408051808303815f875af115801561484b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061486f9190615f6f565b909a909950975050505050505050565b808203828111806130e95750826001600160801b0316816001600160801b03161115611e0357604051633486405d60e21b815260040160405180910390fd5b5f81831361448e5781612f97565b5f5f5f6148db87878787614602565b90505f6148e88887612f38565b1590506148f58887614437565b5f036149335780156149205761491961491283614be5565b614be5565b5f9061285c565b9250614962565b61492c61491283614be5565b9350614962565b801561494f5761491961494961490d8460801c90565b60801b90565b61495f61494961490d8460801c90565b93505b505094509492505050565b5f60806041603084020184901c612f30565b5f60026040603084020184901c612f30565b5f5f61499c856136e7565b90505f6149a8856136e7565b90505f6149dc856149cb846001600160a01b0316866001600160a01b0316614c0b565b8585036001600160a01b0316614c69565b90506001600160801b03811115614a065760405163528073f560e11b815260040160405180910390fd5b6001600160801b03811660d087901b62ffffff60d01b1660e889901b6001600160e81b0319160101613178565b5f5f614a3e856136e7565b90505f614a4a856136e7565b90505f6149dc85600160601b8585036001600160a01b0316614c69565b5f62010000603083901c614430565b5f5f5f5f614a8486866139f8565b9088039897019695505050505050565b5f5f614aa8614aa38460e81c90565b6136e7565b90505f614ab8614aa38560d01c90565b90506127c6614ae96060866001600160801b0316901b8484036001600160a01b0316846001600160a01b0316614d13565b6001846001600160a01b0316614d13565b5f5f614b09614aa38460e81c90565b90505f614b19614aa38560d01c90565b90506127c6846001600160801b03168383036001600160a01b0316614d4f565b5f5f614b48614aa38460e81c90565b90505f614b58614aa38560d01c90565b90506001600160a01b038216614b906060866001600160801b0316901b8484036001600160a01b0316846001600160a01b0316614c69565b81614b9d57614b9d61565a565b04949350505050565b5f5f614bb5614aa38460e81c90565b90505f614bc5614aa38560d01c90565b90506127c6846001600160801b03168383036001600160a01b0316614c0b565b805f600f82900b121561163e5760405163b668004560e01b815260040160405180910390fd5b5f80805f19848609848602925082811083820303915050805f03614c34575060601c9050611e03565b80600160601b11614c43575f5ffd5b5f600160601b85870980840360601c9310909103600160a01b0291909117949350505050565b5f80805f19858709858702925082811083820303915050805f03614c9d575f8411614c92575f5ffd5b508290049050612f97565b808411614ca8575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f614d1f848484614c69565b90505f8280614d3057614d3061565a565b8486091115612f97575f198110614d45575f5ffd5b6001019392505050565b5f614d5a8383614c0b565b90505f600160601b8385091115611e03575f198110614d77575f5ffd5b60010192915050565b60405180604001604052806002906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180608001604052806004905b614dd3614d80565b815260200190600190039081614dcb5790505090565b80356001600160a01b038116811461163e575f5ffd5b8015158114611a59575f5ffd5b803561163e81614dff565b5f5f83601f840112614e27575f5ffd5b5081356001600160401b03811115614e3d575f5ffd5b6020830191508360208260051b8501011115613a34575f5ffd5b5f5f5f5f60608587031215614e6a575f5ffd5b614e7385614de9565b93506020850135614e8381614dff565b925060408501356001600160401b03811115614e9d575f5ffd5b614ea987828801614e17565b95989497509550505050565b5f8151808452602084019350602083015f5b82811015614ee5578151865260209586019590910190600101614ec7565b5093949350505050565b85815284602082015260a060408201525f614f0d60a0830186614eb5565b8281036060840152845180825260208087019201905f5b81811015614f42578351835260209384019390920191600101614f24565b50508381036080850152845180825260209182019250908501905f5b81811015614f7c578251845260209384019390920191600101614f5e565b50919998505050505050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6127c6602083018486614f8b565b5f60208284031215614fd6575f5ffd5b5035919050565b5f5f60408385031215614fee575f5ffd5b50508035926020909101359150565b5f5f5f5f5f5f5f5f60a0898b031215615014575f5ffd5b88356001600160401b03811115615029575f5ffd5b6150358b828c01614e17565b9099509750615048905060208a01614de9565b955060408901356001600160401b03811115615062575f5ffd5b61506e8b828c01614e17565b90965094505060608901356001600160401b0381111561508c575f5ffd5b6150988b828c01614e17565b999c989b50969995989497949560800135949350505050565b6001600160a01b0391909116815260200190565b5f5f5f5f606085870312156150d8575f5ffd5b6150e185614de9565b935060208501356001600160401b038111156150fb575f5ffd5b61510787828801614e17565b909450925050604085013561511b81614dff565b939692955090935050565b8060020b8114611a59575f5ffd5b5f5f60408385031215615145575f5ffd5b823561515081615126565b9150602083013561516081615126565b809150509250929050565b5f5f6020838503121561517c575f5ffd5b82356001600160401b03811115615191575f5ffd5b61519d85828601614e17565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561522157603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f830116880101965050506020820191506020840193506001810190506151cf565b50929695505050505050565b5f5f83601f84011261523d575f5ffd5b5081356001600160401b03811115615253575f5ffd5b602083019150836020606083028501011115613a34575f5ffd5b5f5f5f5f5f5f5f5f5f5f60c08b8d031215615286575f5ffd5b8a356001600160401b0381111561529b575f5ffd5b6152a78d828e01614e17565b909b5099505060208b01356001600160401b038111156152c5575f5ffd5b6152d18d828e01614e17565b90995097505060408b01356001600160401b038111156152ef575f5ffd5b6152fb8d828e01614e17565b90975095505060608b01356001600160401b03811115615319575f5ffd5b6153258d828e0161522d565b9095509350615338905060808c01614e0c565b91505f60a08c01359050809150509295989b9194979a5092959850565b5f60208284031215615365575f5ffd5b612f9782614de9565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156153aa576153aa61536e565b604052919050565b5f5f5f5f5f60a086880312156153c6575f5ffd5b6153cf86614de9565b94506153dd60208701614de9565b9350604086013592506060860135915060808601356001600160401b03811115615405575f5ffd5b8601601f81018813615415575f5ffd5b80356001600160401b0381111561542e5761542e61536e565b615441601f8201601f1916602001615382565b818152896020838501011115615455575f5ffd5b816020840160208301375f602083830101528093505050509295509295909350565b8183526020830192505f815f5b84811015614ee5578135865260209586019590910190600101615484565b606081525f6154b46060830187614eb5565b82810360208401526154c7818688615477565b9150508260020b604083015295945050505050565b5f6001600160401b038211156154f4576154f461536e565b5060051b60200190565b5f6020828403121561550e575f5ffd5b81516001600160401b03811115615523575f5ffd5b8201601f81018413615533575f5ffd5b8051615546615541826154dc565b615382565b8082825260208201915060208360051b850101925086831115615567575f5ffd5b6020840193505b8284101561558957835182526020938401939091019061556e565b9695505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156155b7575f5ffd5b8151612f9781615126565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611e0357611e036155c2565b5f602082840312156155f9575f5ffd5b5051919050565b5f5f60408385031215615611575f5ffd5b825161561c81615126565b6020939093015192949293505050565b5f8184825b8581101561564f578135835260209283019290910190600101615631565b509095945050505050565b634e487b7160e01b5f52601260045260245ffd5b5f8260020b806156805761568061565a565b808360020b0791505092915050565b5f5f8335601e198436030181126156a4575f5ffd5b8301803591506001600160401b038211156156bd575f5ffd5b602001915036819003821315613a34575f5ffd5b818382375f9101908152919050565b5f602082840312156156f0575f5ffd5b8135612f9781615126565b6001600160801b0381168114611a59575f5ffd5b5f6020828403121561571f575f5ffd5b8135612f97816156fb565b602080825281018290525f8360408301825b8581101561575a57823582526020928301929091019060010161573c565b5095945050505050565b5f60208284031215615774575f5ffd5b8151612f9781614dff565b5f5f5f5f60808587031215615792575f5ffd5b845161579d81615126565b60208601519094506157ae81615126565b60408601519093506157bf81615126565b6060959095015193969295505050565b5f600160ff1b82016157e3576157e36155c2565b505f0390565b600282810b9082900b03627fffff198112627fffff82131715611e0357611e036155c2565b600281810b9083900b01627fffff8113627fffff1982121715611e0357611e036155c2565b5f5f60408385031215615844575f5ffd5b82516001600160401b03811115615859575f5ffd5b8301601f81018513615869575f5ffd5b8051615877615541826154dc565b8082825260208201915060208360051b850101925087831115615898575f5ffd5b6020840193505b828410156158c35783516158b281615126565b82526020938401939091019061589f565b6020969096015195979596505050505050565b61010081525f6158ea61010083018c614eb5565b60028b900b60208401526001600160a01b038a166040840152828103606084015261591681898b615477565b6080840197909752505060a08101939093526001600160a01b0391821660c08401521660e09091015295945050505050565b5f5f5f6060848603121561595a575f5ffd5b5050815160208301516040909301519094929350919050565b5f5f60408385031215615984575f5ffd5b505080516020909101519092909150565b805f5b6004811015610d23578151845260209384019390910190600101615998565b608080825285519082018190525f90602087019060a0840190835b818110156159f05783518352602093840193909201916001016159d2565b5050838103602080860191909152875180835291810192508701905f5b81811015615a3657615a20848451615995565b6080939093019260209290920191600101615a0d565b505050604083018590526001600160a01b038416606084015290506116c5565b5f5f5f60608486031215615a68575f5ffd5b83516020850151604086015191945092506001600160401b03811115615a8c575f5ffd5b8401601f81018613615a9c575f5ffd5b8051615aaa615541826154dc565b8082825260208201915060208360071b850101925088831115615acb575f5ffd5b6020939093019260805b83851015615b325789601f860112615aeb575f5ffd5b615af481615382565b808287018c811115615b04575f5ffd5b875b81811015615b1e578051845260209384019301615b06565b505084525093840193602090920191615ad5565b50809450505050509250925092565b5f8151808452602084019350602083015f5b82811015614ee5578151865f5b6004811015615b7f578251825260209283019290910190600101615b60565b5050506080959095019460209190910190600101615b53565b6001600160a01b0389168152610100602080830182905289519183018290525f91908a0190610120840190835b81811015615be3578351835260209384019390920191600101615bc5565b50508960408501528381036060850152615bfd818a615b41565b9150508281036080840152615c128188615b41565b915050615c2a60a08301866001600160a01b03169052565b6001600160a01b039390931660c082015260e001529695505050505050565b6001600160a01b039384168152919092166020820152600f9190910b604082015260600190565b60a081525f615c8360a08301888a614f8b565b6001600160a01b03969096166020830152506040810193909352600291820b6060840152900b60809091015292915050565b5f8160020b8360020b80615ccb57615ccb61565a565b627fffff1982145f1982141615615ce457615ce46155c2565b90059392505050565b60a081525f615d0060a08301888a614f8b565b6020830196909652506001600160801b03939093166040840152600291820b6060840152900b60809091015292915050565b5f5f5f60c08486031215615d44575f5ffd5b84601f850112615d52575f5ffd5b615d5c6080615382565b806080860187811115615d6d575f5ffd5b865b81811015615d87578051845260209384019301615d6f565b505160a087015191955093509050615d9e81615126565b809150509250925092565b6001600160801b038316815260a08101612f976020830184615995565b61010081525f615ddb61010083018b8d614f8b565b6001600160a01b03999099166020830152506040810196909652600294850b606087015292840b6080860152920b60a084015260c083019190915260e09091015292915050565b5f5f60408385031215615e33575f5ffd5b8251615e3e816156fb565b6020840151909250615160816156fb565b60ff8281168282160390811115611e0357611e036155c2565b60ff8181168382160190811115611e0357611e036155c2565b61012081525f615e9561012083018d614eb5565b8281036020840152615ea8818c8e615477565b60029a909a0b604084015250506001600160a01b039687166060820152608081019590955260a085019390935290841660c084015290921660e082015261010001529392505050565b5f8260020b8260020b028060020b91508082146110eb576110eb6155c2565b62ffffff81811683821602908116908181146110eb576110eb6155c2565b8051600f81900b811461163e575f5ffd5b5f60208284031215615f4f575f5ffd5b612f9782615f2e565b8082028115828204841417611e0357611e036155c2565b5f5f60408385031215615f80575f5ffd5b825163ffffffff81168114615f93575f5ffd5b9150615fa160208401615f2e565b9050925092905056fe8053dfe21e206073e7d912b6bcd2323894159cfd58d0a607082c42be308afb86a2646970667358221220bfa9cfd2c03f4d20ba7676b763b06ce831d54edf3605cc6d8bf2153be577189a64736f6c634300081c003300000000000000000000000000000000000005e4693adc8ec0f12d686f728198000000000000000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac00000000000000000000000082bf455e9ebd6a541ef10b683de1edcaf05ce7a182bf455e9ebd6a541ef10b683de1edcaf05ce7a19680410649b002037da5dcfa000000000000000000000000000000000000000000000000000000000000000400000000000000b361194cfe6312ee3210d53c15aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e0461ff715f82bf455e9ebd6a541ef10b683de1edcaf05ce7a19680410649b002037da5dcfa00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000005d8660e060405234801561000f575f5ffd5b50604051615d26380380615d2683398101604081905261002e91610047565b6001600160a01b0390921660805260a05260c052610086565b5f5f5f60608486031215610059575f5ffd5b83516001600160a01b038116811461006f575f5ffd5b602085015160409095015190969495509392505050565b60805160a05160c051615c3e6100e85f395f8181610e0101528181610f6e015281816113bd015261145c01525f8181610ddd01528181610f4a01528181611399015261143801525f8181611111015281816115ac01526118970152615c3e5ff3fe60806040526004361061016c575f3560e01c8063b9068a61116100c6578063d3a26d8a1161007c578063eb1de2e211610057578063eb1de2e2146104fe578063f242432a14610537578063fa461e3314610551575f5ffd5b8063d3a26d8a1461046d578063e77e0a2f1461048c578063e985e9c5146104c5575f5ffd5b8063c8397a5a116100ac578063c8397a5a146103fa578063d2c725e014610419578063d34879971461044e575f5ffd5b8063b9068a61146103a9578063b909a0b3146103db575f5ffd5b80634e1273f411610126578063a22cb46511610101578063a22cb46514610332578063ac9650d814610351578063b33eb6f314610371575f5ffd5b80634e1273f41461029f57806377645261146102cb57806377880f15146102ea575f5ffd5b80632eb2c2d6116101565780632eb2c2d6146101e55780633f8e156e1461020157806341a058ef14610271575f5ffd5b8062fdd58e1461017057806301ffc9a7146101b6575b5f5ffd5b34801561017b575f5ffd5b506101a361018a366004614c7c565b5f60208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b3480156101c1575f5ffd5b506101d56101d0366004614cd3565b610570565b60405190151581526020016101ad565b3480156101f0575f5ffd5b506101ff61016c366004614d6d565b005b34801561020c575f5ffd5b5061024c61021b366004614e30565b67ffffffffffffffff165f9081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ad565b34801561027c575f5ffd5b5061029061028b366004614e82565b610608565b6040516101ad93929190614f02565b3480156102aa575f5ffd5b506102be6102b9366004614f43565b61076b565b6040516101ad9190614faf565b3480156102d6575f5ffd5b506101a36102e5366004614ff1565b610873565b3480156102f5575f5ffd5b50610309610304366004615053565b610918565b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016101ad565b34801561033d575f5ffd5b506101ff61034c366004615106565b610aa6565b61036461035f36600461513d565b610b3c565b6040516101ad91906151c8565b34801561037c575f5ffd5b5061039061038b366004615356565b610c49565b60405167ffffffffffffffff90911681526020016101ad565b3480156103b4575f5ffd5b506103c86103c336600461539a565b610ca1565b60405160029190910b81526020016101ad565b3480156103e6575f5ffd5b506101ff6103f5366004614e30565b610d34565b348015610405575f5ffd5b506103906104143660046153dc565b611073565b348015610424575f5ffd5b507f8053dfe21e206073e7d912b6bcd2323894159cfd58d0a607082c42be308afb865c15156101d5565b348015610459575f5ffd5b506101ff610468366004615435565b611597565b348015610478575f5ffd5b50610290610487366004614e82565b611612565b348015610497575f5ffd5b506104ab6104a6366004614ff1565b611769565b60408051600f93840b81529190920b6020820152016101ad565b3480156104d0575f5ffd5b506101d56104df366004615478565b600160209081525f928352604080842090915290825290205460ff1681565b348015610509575f5ffd5b5061051d610518366004614e30565b611812565b60408051600293840b81529190920b6020820152016101ad565b348015610542575f5ffd5b506101ff61016c3660046154a4565b34801561055c575f5ffd5b506101ff61056b366004615435565b611882565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061060257507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610610614c3d565b5f5f61061a611903565b6106373388886fffffffffffffffffffffffffffffffff16611965565b6040516fffffffffffffffffffffffffffffffff87168152879033907f16695fc037c20a8984b20ffc7aadd6ce10e62756f9ca42933a1aa6459ef064ca9060200160405180910390a361068987611afc565b600284810b9086900b135f806106a38c8c858c8e86611d6f565b9150915082156106b1579596955b5f6106f08d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ca192505050565b90508760020b8160020b12158061070d57508860020b8160020b13155b1561074f576040517f618ea40c000000000000000000000000000000000000000000000000000000008152600282900b60048201526024015b60405180910390fd5b919550935091505061075f6121b3565b96509650969350505050565b60608367ffffffffffffffff81111561078657610786615249565b6040519080825280602002602001820160405280156107af578160200160208202803683370190505b5090505f5b80851461086a575f5f8787848181106107cf576107cf61551b565b90506020020160208101906107e49190615548565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8585848181106108305761083061551b565b9050602002013581526020019081526020015f20548282815181106108575761085761551b565b60209081029190910101526001016107b4565b50949350505050565b5f8061088187890189615548565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083811b8216602084015289901b1660348201526048810187905260e886811b606883015285901b606b8201529091506004905f906108fd90606e015b604051602081830303815290604052805160209091012090565b81526020019081526020015f20549150509695505050505050565b5f80806109278b8d018d615548565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083811b821660208401528d901b166034820152604881018b905260e88a811b606883015289901b606b8201529091505f9061098a90606e016108e3565b5f818152600460205260408120549192509080627fffff60028b900b1280156109c457506fffffffffffffffffffffffffffffffff811615155b15610a57575f858d8d8d846109dc858386868b6121d8565b5f8b8152600760205260409020549091506109f8908290612235565b955050505050505f5f610a0c85848d612345565b5f89815260056020908152604080832054600690925290912054929450909250610a38918490846124ee565b909250905060018c14610a4b5780610a4d565b815b9550505050610a84565b88600114610a72575f84815260066020526040902054610a81565b5f848152600560205260409020545b92505b82610a8f8460801c90565b965096505050505050995099975050505050505050565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60608167ffffffffffffffff811115610b5757610b57615249565b604051908082528060200260200182016040528015610b8a57816020015b6060815260200190600190039081610b755790505b5090505f5b808314610c42575f8030868685818110610bab57610bab61551b565b9050602002810190610bbd9190615563565b604051610bcb9291906155c4565b5f60405180830381855af49150503d805f8114610c03576040519150601f19603f3d011682016040523d82523d5f602084013e610c08565b606091505b509150915081610c1a57805160208201fd5b80848481518110610c2d57610c2d61551b565b60209081029190910101525050600101610b8f565b5092915050565b5f5f83806020019051810190610c5f91906155d3565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260026020908152604080832060ff8816845290915290205490915060801c5b949350505050565b5f5f82806020019051810190610cb791906155d3565b90508073ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610d02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d26919061560a565b509398975050505050505050565b67ffffffffffffffff81165f9081526003602090815260408083205473ffffffffffffffffffffffffffffffffffffffff1680845260028352818420602886901c60ff16808652935292205460f081901c600116610dbe576040517f486aa30700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff603085901c16815f80610f3060c084901c60020b610f26610f0d7f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008d73ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8d91906155d3565b73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef99190615697565b0281610f0757610f076156ae565b046126b0565b87876fffffffffffffffffffffffffffffffff166126c7565b5f0360020b61274f565b9150610fde610f3f8660d81c90565b60020b610fd6610f0d7f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008d73ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e69573d5f5f3e3d5ffd5b60020b61275d565b9050610ff68389848460f08a901c600116151561276b565b73ffffffffffffffffffffffffffffffffffffffff88165f8181526002602081815260408084208c855282529283902094909455815186820b81529085900b9381019390935290917fac639863cf263ec4d7f6c93d2b312174ee3ec131a2f5789cc0dcc96a7e697226910160405180910390a25050505050505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106110ae5783856110b1565b84845b6040517f1698ee8200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152808316602483015262ffffff871660448301529297509095505f917f00000000000000000000000000000000000000000000000000000000000000001690631698ee8290606401602060405180830381865afa158015611156573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117a91906155d3565b905073ffffffffffffffffffffffffffffffffffffffff81166111c9576040517f486aa30700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260ff165f03611207576040517f93db02630000000000000000000000000000000000000000000000000000000081525f6004820152602401610746565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260026020908152604080832060ff8716845290915290205460f01c600116156112815773ffffffffffffffffffffffffffffffffffffffff165f90815260026020908152604080832060ff8616845290915290205460801c9050610c99565b5f8173ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ef91906156db565b9050607882901c64ffffffffff16602885901b65ff00000000001601603082901b68ffffff000000000000160192505b67ffffffffffffffff83165f9081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611371576001830164ffffffffff1667ffffff0000000000841601925061131f565b5f61137b826127c6565b6fffffffffffffffffffffffffffffffff1690505f5f61142c6114257f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008d73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed5573d5f5f3e3d5ffd5b85856126c7565b5f0391506114c46114257f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008e73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed5573d5f5f3e3d5ffd5b90506114d483878484600161276b565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260026020818152604080842060ff8e16855282528084209590955567ffffffffffffffff8b16808452600382529285902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001685179055845192835286820b9083015284900b81840152915190917f4bd4bcef57942fad6bb34f8b7d1b53da46f96eefc173461c3be68165a9e729d1919081900360600190a25050505050949350505050565b5f6115a4828401846156f6565b90506115d4337f0000000000000000000000000000000000000000000000000000000000000000835f0151612810565b84156115ee5780515160208201516115ee9190338861290d565b831561160b5761160b815f0151602001518260200151338761290d565b5050505050565b61161a614c3d565b5f5f611624611903565b6116413388886fffffffffffffffffffffffffffffffff166129d4565b6040516fffffffffffffffffffffffffffffffff87168152879033907f23833bcc608a225445893342669a9bc035de4ef96cc1edd47cead470f1f7817a9060200160405180910390a35f61169488612a70565b9050600285810b9087900b135f806116b18d8d858d886001611d6f565b9150915082156116bf579697965b5f6116fe8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ca192505050565b90508860020b8160020b12158061171b57508960020b8160020b13155b15611758576040517f618ea40c000000000000000000000000000000000000000000000000000000008152600282900b6004820152602401610746565b91965094509250505061075f6121b3565b5f8080611778888a018a615548565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083811b821660208401528a901b1660348201526048810188905260e887811b606883015286901b606b8201529091505f9060079082906117e090606e016108e3565b81526020019081526020015f205490506117f78190565b93506118038160801d90565b92505050965096945050505050565b67ffffffffffffffff81165f9081526003602090815260408083205473ffffffffffffffffffffffffffffffffffffffff168084526002835281842060ff602887901c1680865293529083205483929061186c8160c01c90565b6118768260d81c90565b94509450505050915091565b5f61188f828401846156f6565b90506118bf337f0000000000000000000000000000000000000000000000000000000000000000835f0151612810565b5f5f86136118d2578151602001516118d6565b8151515b90505f5f87136118e657856118e8565b865b90506118fa828460200151338461290d565b50505050505050565b7f8053dfe21e206073e7d912b6bcd2323894159cfd58d0a607082c42be308afb86805c159030905d80611962576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b73ffffffffffffffffffffffffffffffffffffffff83165f818152602081815260408083208684528252808320805486019055805186815291820185905233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff83163b15611af7576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082523360048301525f60248301819052604483018590526064830184905260a0608484015260a48301529073ffffffffffffffffffffffffffffffffffffffff85169063f23a6e619060c4016020604051808303815f875af1158015611a7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9e919061579a565b7fffffffff000000000000000000000000000000000000000000000000000000001614611af7576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b611b06815f612aca565b5f03611b41576040517f93db026300000000000000000000000000000000000000000000000000000000815260016004820152602401610746565b77fffffffff200fffffffff200fffffffff200fffffffff200604082901c165f611b6a83612ae0565b90505f5b80600414611d6957611b808482612aca565b5f03611bcf576040603082020184901c15611bca576040517f93db026300000000000000000000000000000000000000000000000000000000815260016004820152602401610746565b611d69565b600181015b828114611c3b578060300284901c65ffffffffffff168260300285901c65ffffffffffff1603611c33576040517f93db026300000000000000000000000000000000000000000000000000000000815260066004820152602401610746565b600101611bd4565b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611c6c8583603002604c011c90565b60020b1480611c8e5750620d89e8611c898583603002604c011c90565b60020b145b15611cc7576040517f93db0263000000000000000000000000000000000000000000000000000000008152600481810152602401610746565b5f611cd28583612b1a565b905060018303811115611d14576040517f93db026300000000000000000000000000000000000000000000000000000000815260036004820152602401610746565b818114611d605781611d268683612b1a565b14611d60576040517f93db026300000000000000000000000000000000000000000000000000000000815260036004820152602401610746565b50600101611b6e565b50505050565b611d77614c3d565b5f80611d85888a018a615548565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526002602052604081209192509081611db788612b2c565b60ff16815260208101919091526040015f2054905073ffffffffffffffffffffffffffffffffffffffff82161580611e0c57508567ffffffffffffffff16611dff8260801c90565b67ffffffffffffffff1614155b80611e1c5750600160f082901c16155b15611e53576040517f768778de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8080805b611e618a612ae0565b81146120d957611e718a82612b3d565b60020b5f03611f69575f611e858b83612b50565b90505f611e958c8e856001612b62565b90505f8215611ea5576001611ec7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b90505f611ed48e86612c56565b90505f81600114611eee57611ee984846157e2565b611ef0565b5f5b90505f8215611f1257611f038560801c90565b611f0d90856157e2565b611f14565b5f5b9050611f5c817fffffffffffffffffffffffffffffffff000000000000000000000000000000008a16848b016fffffffffffffffffffffffffffffffff16015b9060801b0190565b97505050505050506120d1565b5f611f758b838e612ca3565b905089612034575f611f868c612d0e565b90505f611f938360e81c90565b90505f611fa08460d01c90565b9050611fac8383615801565b60020b151580611fc75750611fc18382615801565b60020b15155b80611fe05750611fd78960c01c90565b60020b8260020b125b80611ff95750611ff08960d81c90565b60020b8160020b135b15612030576040517f1577d96600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505b61203d81612d1d565b8501945061204a81612dbf565b840193505f61205c888d85858f612e14565b8b856004811061206e5761206e61551b565b6020020152905061207f8982613155565b98506120cc61208e8d85612c56565b156120b2576120ad825b6fffffffffffffffffffffffffffffffff1690565b6120c5565b6120c56120bf8360801d90565b60801b90565b8590613155565b935050505b600101611e58565b506120f560046f7fffffffffffffffffffffffffffffff615822565b6fffffffffffffffffffffffffffffffff1683118061213f575061212a60046f7fffffffffffffffffffffffffffffff615822565b6fffffffffffffffffffffffffffffffff1682115b15612176576040517f543a6e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8a156121a35780156121a3576121a08661219a87846121958e5f613213565b613225565b90613155565b95505b5050505050965096945050505050565b5f7f8053dfe21e206073e7d912b6bcd2323894159cfd58d0a607082c42be308afb865d565b5f5f5f6121e7888888886135a2565b9150915061222961220a82866fffffffffffffffffffffffffffffffff16613813565b611f5461209885886fffffffffffffffffffffffffffffffff16613813565b98975050505050505050565b5f5f6122418360801d90565b600f0b61224e8560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b14158061227a57508181600f0b14155b156122b1576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61233a6122c184600f0b5f61275d565b6123106122d184600f0b5f61275d565b889081016fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000919091160190565b9060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b979650505050505050565b5f5f5f6123528660801c90565b6fffffffffffffffffffffffffffffffff908116915086168082015f808881608082901c90506123a3826fffffffffffffffffffffffffffffffff168668010000000000000000026002890a6138b7565b93506123d0816fffffffffffffffffffffffffffffffff168668010000000000000000026002890a6138b7565b925050505f5f5f8a88816123e6576123e66156ae565b04870190506123fe6123f98683896138b7565b613980565b925061240e6123f98583896138b7565b91506124506fffffffffffffffffffffffffffffffff84168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b99505050505f5f5f8a6002890a8161246a5761246a6156ae565b048887026002880a030190506124876123f9868360028a0a6138b7565b925061249a6123f9858360028a0a6138b7565b91506124dc6fffffffffffffffffffffffffffffffff84168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b98505050505050505050935093915050565b5f8080612526865b6fffffffffffffffffffffffffffffffff16885b6fffffffffffffffffffffffffffffffff166123f99190615870565b90505f6125526125368860801c90565b6fffffffffffffffffffffffffffffffff1661250a8a60801c90565b90505f61255e866124f6565b90505f61256e6125368860801c90565b90505f6fffffffffffffffffffffffffffffffff85811614806125a257506fffffffffffffffffffffffffffffffff838116145b1590505f6fffffffffffffffffffffffffffffffff85811614806125d757506fffffffffffffffffffffffffffffffff838116145b15905061263c816125f1576125ec8d60801c90565b6125f3565b855b836125fe578d612600565b875b6fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b61269d826126535761264e8c60801c90565b612655565b845b84612660578c612600565b866fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9750975050505050505094509492505050565b5f8183116126be57816126c0565b825b9392505050565b5f5f6c010000000000000000000000006126e0856139b2565b0373ffffffffffffffffffffffffffffffffffffffff1683029050606081901c851061271257620d89e89150506126c0565b61274661273f867c0100000000000000000000000000000000000000000000000000000000846080613d12565b600d613e37565b95945050505050565b5f8183126126be57816126c0565b5f8183136126be57816126c0565b5f60f082612779575f61277c565b60015b60ff16901b60d88462ffffff16901b60c08662ffffff16901b60808867ffffffffffffffff16901b896fffffffffffffffffffffffffffffffff1601010101905095945050505050565b5f600282900b620d89e8816127dd576127dd6156ae565b0560020260010162ffffff166fffffffffffffffffffffffffffffffff801681612809576128096156ae565b0492915050565b8051602082015160408084015190517f1698ee8200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152918316602483015262ffffff16604482015284821691841690631698ee8290606401602060405180830381865afa15801561289c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c091906155d3565b73ffffffffffffffffffffffffffffffffffffffff1614611af7576040517f3a94c70500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815284816004015283816024015282816044015260205f6064835f8a5af13d15601f3d1160015f51141617169150508061160b575f6129718686613f51565b6040517f81f20f8600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8089166004830152871660248201526044810185905260648101829052909150608401610746565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020818152604080832085845290915281208054839290612a11908490615883565b909155505060408051838152602081018390525f9173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000612a9b83612ae0565b6004036030027b01000000000001000000000001000000000001000000000000000000901c1682189050919050565b5f60806041603084020184901c5b069392505050565b5f72fe0000000000fe0000000000fe0000000000fe604083901c165b6001603083021b8110612b1457816001019150612afc565b50919050565b5f6004604a603084020184901c612ad8565b5f610100602883901c5b0692915050565b5f6110006064603084020184901c612ad8565b5f60026048603084020184901c612ad8565b5f808080612b708887612b3d565b60020b1515905080612b8b576002606460308802011b880197505b5f612b9789888a612ca3565b9050612ba38988612b50565b158015612bad5750855b80612bc95750612bbd8988612b50565b15801590612bc9575085155b80612bd2575081155b15612bf257612be081613fa5565b9350612beb81614036565b9250612c09565b612bfb81612d1d565b9350612c0681612dbf565b92505b612c496fffffffffffffffffffffffffffffffff85168460801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9998505050505050505050565b5f60026049603084020184901c612ad8565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000821691016fffffffffffffffffffffffffffffffff160190565b5f8080612cb0868661408b565b90925090505f612cc08787612aca565b612cdc906fffffffffffffffffffffffffffffffff8716615896565b9050612ce88787613213565b5f03612d0357612cf98383836140c2565b93505050506126c0565b612cf98383836141eb565b5f62010000603083901c612b36565b5f5f612d31612d2c8460e81c90565b6139b2565b90505f612d41612d2c8560d01c90565b905073ffffffffffffffffffffffffffffffffffffffff8216612da96060866fffffffffffffffffffffffffffffffff16901b84840373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166138b7565b81612db657612db66156ae565b04949350505050565b5f5f612dce612d2c8460e81c90565b90505f612dde612d2c8560d01c90565b9050610c99846fffffffffffffffffffffffffffffffff1683830373ffffffffffffffffffffffffffffffffffffffff16614235565b5f8080612e968833612e268a8a612c56565b612e308960e81c90565b612e3a8a60d01c90565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606096871b811660208301529490951b9093166034850152604884019190915260e890811b60688401521b606b820152606e016108e3565b90505f80612ea48989612b50565b5f848152600460205260408120549192508190608082901c9050896fffffffffffffffffffffffffffffffff81165f03612f0a576040517f126ae3af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845f03612f3557612f1b81846158ad565b95508915612f3057612f2d81836158d5565b91505b612faa565b806fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff161015612f93576040517fc56d518e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808303955089612faa57612fa781836158ad565b91505b612fea6fffffffffffffffffffffffffffffffff87168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b5f888152600460205260408120919091556130058e8e612c56565b90508e5f6130138e60e81c90565b90505f6130208f60d01c90565b90505f895f03613045578e613035578561303e565b61303e866158fd565b905061305d565b8e61305857613053866158fd565b61305a565b855b90505b60408051600285810b825284900b6020820152600f83900b8183015290518691339173ffffffffffffffffffffffffffffffffffffffff8816917f40529c997b8a859ccbbea4596215730b20a486021aa716aa10f5625051561504919081900360600190a45050505050505050815f146130e0576130db888c6142d5565b6130ea565b6130ea888c6143c2565b95506fffffffffffffffffffffffffffffffff811615613126575f61310e8b612b2c565b60ff169050613122898d84888b888761468d565b9550505b6131338b848a6001614877565b5f94855260076020526040909420939093555092989197509095505050505050565b5f5f6131618360801d90565b600f0b61316e8560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b14158061319a57508181600f0b14155b156131d1576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61233a837fffffffffffffffffffffffffffffffff0000000000000000000000000000000087168388016fffffffffffffffffffffffffffffffff1601611f54565b5f60026040603084020184901c612ad8565b5f80806060868683608082901d9050604051806040016040528060405180606001604052808673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613293573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132b791906155d3565b73ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561331b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333f91906155d3565b73ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133c79190615939565b62ffffff16905281523360209182015260405161342d9291018151805173ffffffffffffffffffffffffffffffffffffffff908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b604051602081830303815290604052935081600f0b5f14158015613454575080600f0b5f14155b1561348a57875f03613475575f82600f0b129550815f03600f0b94506134ba565b5f81600f0b139550805f03600f0b94506134ba565b81600f0b5f146134a9575f82600f0b129550815f03600f0b94506134ba565b5f81600f0b139550805f03600f0b94505b845f036134cf575f96505050505050506126c0565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1663128acb08338a8a8c61350f5773fffd8963efd1fc6a506488495d951d5263988d25613516565b6401000276a45b8b6040518663ffffffff1660e01b8152600401613537959493929190615954565b60408051808303815f875af1158015613552573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061357691906159ac565b91509150613592613586826149e1565b611f54612098856149e1565b9c9b505050505050505050505050565b6040517ff30dba93000000000000000000000000000000000000000000000000000000008152600283900b60048201525f9081908190819073ffffffffffffffffffffffffffffffffffffffff89169063f30dba939060240161010060405180830381865afa158015613617573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061363b91906159ce565b50506040517ff30dba9300000000000000000000000000000000000000000000000000000000815260028c900b60048201529397509195505f94508493505073ffffffffffffffffffffffffffffffffffffffff8c169163f30dba93915060240161010060405180830381865afa1580156136b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136dc91906159ce565b505050509350935050508760020b8960020b12156137035781840395508083039450613806565b8660020b8960020b1261371f5783820395508281039450613806565b81848b73ffffffffffffffffffffffffffffffffffffffff1663f30583996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561376a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061378e9190615697565b0303955080838b73ffffffffffffffffffffffffffffffffffffffff1663461413196040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138019190615697565b030394505b5050505094509492505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f0361385b575060801c9050610602565b8070010000000000000000000000000000000011613877575f5ffd5b5f70010000000000000000000000000000000085870980840360801c93109091037001000000000000000000000000000000000291909117949350505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f0361390a575f84116138ff575f5ffd5b5082900490506126c0565b808411613915575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806fffffffffffffffffffffffffffffffff811681146139ad57506fffffffffffffffffffffffffffffffff5b919050565b5f5f5f8360020b126139c7578260020b6139ce565b8260020b5f035b9050620d89e8811115613a0d576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f03613a2f57700100000000000000000000000000000000613a41565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613a75576ffff97272373d413259a46990580e213a0260801c5b6004821615613a94576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613ab3576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613ad2576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613af1576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613b10576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613b2f576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613b4f576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613b6f576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613b8f576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613baf576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613bcf576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613bef576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613c0f576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613c2f576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613c50576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613c70576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613c8f576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613cac576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315613cea57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81613ce657613ce66156ae565b0490505b640100000000810615613cfe576001613d00565b5f5b60ff16602082901c0192505050919050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868809868802925082811083820303915050805f03613d78575f8511613d5a575f5ffd5b8482049250613d6f8360018660020a03614a1f565b92505050610c99565b80846101000386901c1015613d975760018460020a0392505050610c99565b5f858789095f878103881697889004978286038190049583119094036001918590039490940401838102949094179390915060038702600290811880890282030280890282030280890282030280890282030280890282030280890282030290613e29908287029089900a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614a1f565b9a9950505050505050505050565b5f5f613ec4847f0706060506020504060203020504030106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b607f8190039490941b9360800360401b9050603f838103905b81811115613f2757600290950a607f81901c60ff9190911c90811c9590811b909203917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613edd565b50700100000000000000000000000000000000693627a301d786ca58a52f83020495945050505050565b5f6040517f70a0823100000000000000000000000000000000000000000000000000000000815282600482015260205f602483875afa613f8f575f91505b5060203d1015613f9c57505f5b50505f51919050565b5f5f613fb4612d2c8460e81c90565b90505f613fc4612d2c8560d01c90565b9050610c996140186060866fffffffffffffffffffffffffffffffff16901b84840373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16614a2d565b60018473ffffffffffffffffffffffffffffffffffffffff16614a2d565b5f5f614045612d2c8460e81c90565b90505f614055612d2c8560d01c90565b9050610c99846fffffffffffffffffffffffffffffffff1683830373ffffffffffffffffffffffffffffffffffffffff16614a88565b5f806140b761409f8585603002604c011c90565b6140a98686612b3d565b6140b287612d0e565b614ae2565b909590945092505050565b5f5f6140cd856139b2565b90505f6140d9856139b2565b90505f614134856141168473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16614235565b85850373ffffffffffffffffffffffffffffffffffffffff166138b7565b90506fffffffffffffffffffffffffffffffff811115614180576040517fa500e7ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff811660d087901b7cffffff00000000000000000000000000000000000000000000000000001660e889901b7fffffff0000000000000000000000000000000000000000000000000000000000160101979650505050505050565b5f5f6141f6856139b2565b90505f614202856139b2565b90505f614134856c0100000000000000000000000085850373ffffffffffffffffffffffffffffffffffffffff166138b7565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f0361427d575060601c9050610602565b806c0100000000000000000000000011614295575f5ffd5b5f6c0100000000000000000000000085870980840360601c9310909103740100000000000000000000000000000000000000000291909117949350505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1663a34123a76142fe8760e81c90565b6143088860d01c90565b886040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600293840b60048201529190920b60248201526fffffffffffffffffffffffffffffffff909116604482015260640160408051808303815f875af115801561437f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143a391906159ac565b91509150612746815f03611f54845f035f612c6890919063ffffffff16565b5f5f604051806040016040528060405180606001604052808673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015614423573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061444791906155d3565b73ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144cf91906155d3565b73ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015614533573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145579190615939565b62ffffff1690528152336020918201526040516145bd9291018151805173ffffffffffffffffffffffffffffffffffffffff908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b60405160208183030381529060405290505f5f8473ffffffffffffffffffffffffffffffffffffffff16633c8a7d8d306145f78960e81c90565b6146018a60d01c90565b8a886040518663ffffffff1660e01b8152600401614623959493929190615a75565b60408051808303815f875af115801561463e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061466291906159ac565b9092509050614683816fffffffffffffffffffffffffffffffff8416611f54565b9695505050505050565b5f84815260076020526040812054819087906146b5906146af8b848e87614877565b90612235565b915050836001036146cd576146ca8186614b00565b90505b801561486b575f5f8973ffffffffffffffffffffffffffffffffffffffff16634f1eb3d8336146fc8e60e81c90565b6147068f60d01c90565b876147118960801c90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff9095166004860152600293840b60248601529190920b60448401526fffffffffffffffffffffffffffffffff918216606484015216608482015260a40160408051808303815f875af11580156147aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147ce9190615acd565b915091505f5f5f6147dc8a90565b600f0b126147ea57836147ee565b8884015b91505f6147fb8a60801d90565b600f0b126148095782614816565b6148138960801d90565b83015b90506148586fffffffffffffffffffffffffffffffff83168260801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b95506148668a8c888a614b79565b505050505b50979650505050505050565b5f5f5f8673ffffffffffffffffffffffffffffffffffffffff1663514ea4bf6148f7306148a48960e81c90565b6148ae8a60d01c90565b60405160609390931b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602084015260e891821b6034840152901b6037820152603a016108e3565b6040518263ffffffff1660e01b815260040161491591815260200190565b60a060405180830381865afa158015614930573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149549190615afa565b50509250925050836149a35761499e61497f82886fffffffffffffffffffffffffffffffff16613813565b611f54612098858a6fffffffffffffffffffffffffffffffff16613813565b61233a565b61233a6149c282886fffffffffffffffffffffffffffffffff16614bd5565b611f54612098858a6fffffffffffffffffffffffffffffffff16614bd5565b80600f81900b81146139ad576040517fb668004500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8183106126be57816126c0565b5f614a398484846138b7565b90505f8280614a4a57614a4a6156ae565b84860911156126c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110614a7e575f5ffd5b6001019392505050565b5f614a938383614235565b90505f6c010000000000000000000000005b8385091115610602577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110614ad9575f5ffd5b60010192915050565b5f5f5f5f614af08686614bfa565b9088039897019695505050505050565b5f5f614b0c8360801d90565b600f0b614b198560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b14158061319a57508181600f0b146131d1576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f614b86858585612345565b5f88815260056020908152604080832054600690925290912054929450909250614bb2918490846124ee565b5f978852600560209081526040808a206006909252909820559095555050505050565b5f614be08383613813565b90505f700100000000000000000000000000000000614aa5565b5f806002614c088486615b58565b614c129190615b77565b614c31614c1f8587615bea565b62ffffff166002808204910615150190565b915091505b9250929050565b60405180608001604052806004906020820280368337509192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114611962575f5ffd5b5f5f60408385031215614c8d575f5ffd5b8235614c9881614c5b565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611962575f5ffd5b5f60208284031215614ce3575f5ffd5b81356126c081614ca6565b5f5f83601f840112614cfe575f5ffd5b50813567ffffffffffffffff811115614d15575f5ffd5b6020830191508360208260051b8501011115614c36575f5ffd5b5f5f83601f840112614d3f575f5ffd5b50813567ffffffffffffffff811115614d56575f5ffd5b602083019150836020828501011115614c36575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215614d84575f5ffd5b8835614d8f81614c5b565b97506020890135614d9f81614c5b565b9650604089013567ffffffffffffffff811115614dba575f5ffd5b614dc68b828c01614cee565b909750955050606089013567ffffffffffffffff811115614de5575f5ffd5b614df18b828c01614cee565b909550935050608089013567ffffffffffffffff811115614e10575f5ffd5b614e1c8b828c01614d2f565b999c989b5096995094979396929594505050565b5f60208284031215614e40575f5ffd5b813567ffffffffffffffff811681146126c0575f5ffd5b6fffffffffffffffffffffffffffffffff81168114611962575f5ffd5b8060020b8114611962575f5ffd5b5f5f5f5f5f5f60a08789031215614e97575f5ffd5b863567ffffffffffffffff811115614ead575f5ffd5b614eb989828a01614d2f565b909750955050602087013593506040870135614ed481614e57565b92506060870135614ee481614e74565b91506080870135614ef481614e74565b809150509295509295509295565b60c0810181855f5b6004811015614f29578151835260209283019290910190600101614f0a565b5050508360808301528260020b60a0830152949350505050565b5f5f5f5f60408587031215614f56575f5ffd5b843567ffffffffffffffff811115614f6c575f5ffd5b614f7887828801614cee565b909550935050602085013567ffffffffffffffff811115614f97575f5ffd5b614fa387828801614cee565b95989497509550505050565b602080825282518282018190525f918401906040840190835b81811015614fe6578351835260209384019390920191600101614fc8565b509095945050505050565b5f5f5f5f5f5f60a08789031215615006575f5ffd5b863567ffffffffffffffff81111561501c575f5ffd5b61502889828a01614d2f565b909750955050602087013561503c81614c5b565b9350604087013592506060870135614ee481614e74565b5f5f5f5f5f5f5f5f5f6101008a8c03121561506c575f5ffd5b893567ffffffffffffffff811115615082575f5ffd5b61508e8c828d01614d2f565b909a5098505060208a01356150a281614c5b565b965060408a0135955060608a01356150b981614e74565b945060808a01356150c981614e74565b935060a08a01356150d981614e74565b989b979a50959894979396929550929360c0810135935060e00135919050565b8015158114611962575f5ffd5b5f5f60408385031215615117575f5ffd5b823561512281614c5b565b91506020830135615132816150f9565b809150509250929050565b5f5f6020838503121561514e575f5ffd5b823567ffffffffffffffff811115615164575f5ffd5b61517085828601614cee565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561523d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261522885835161517c565b945060209384019391909101906001016151ee565b50929695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561529957615299615249565b60405290565b5f82601f8301126152ae575f5ffd5b813567ffffffffffffffff8111156152c8576152c8615249565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561531557615315615249565b60405281815283820160200185101561532c575f5ffd5b816020850160208301375f918101602001919091529392505050565b60ff81168114611962575f5ffd5b5f5f60408385031215615367575f5ffd5b823567ffffffffffffffff81111561537d575f5ffd5b6153898582860161529f565b925050602083013561513281615348565b5f602082840312156153aa575f5ffd5b813567ffffffffffffffff8111156153c0575f5ffd5b610c998482850161529f565b62ffffff81168114611962575f5ffd5b5f5f5f5f608085870312156153ef575f5ffd5b84356153fa81614c5b565b9350602085013561540a81614c5b565b9250604085013561541a816153cc565b9150606085013561542a81615348565b939692955090935050565b5f5f5f5f60608587031215615448575f5ffd5b8435935060208501359250604085013567ffffffffffffffff81111561546c575f5ffd5b614fa387828801614d2f565b5f5f60408385031215615489575f5ffd5b823561549481614c5b565b9150602083013561513281614c5b565b5f5f5f5f5f5f60a087890312156154b9575f5ffd5b86356154c481614c5b565b955060208701356154d481614c5b565b94506040870135935060608701359250608087013567ffffffffffffffff8111156154fd575f5ffd5b61550989828a01614d2f565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215615558575f5ffd5b81356126c081614c5b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615596575f5ffd5b83018035915067ffffffffffffffff8211156155b0575f5ffd5b602001915036819003821315614c36575f5ffd5b818382375f9101908152919050565b5f602082840312156155e3575f5ffd5b81516126c081614c5b565b805161ffff811681146139ad575f5ffd5b80516139ad816150f9565b5f5f5f5f5f5f5f60e0888a031215615620575f5ffd5b875161562b81614c5b565b602089015190975061563c81614e74565b955061564a604089016155ee565b9450615658606089016155ee565b9350615666608089016155ee565b925060a088015161567681615348565b60c0890151909250615687816150f9565b8091505092959891949750929550565b5f602082840312156156a7575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f602082840312156156eb575f5ffd5b81516126c081614e74565b5f818303608081128015615708575f5ffd5b506040805190810167ffffffffffffffff8111828210171561572c5761572c615249565b604052606082121561573c575f5ffd5b615744615276565b9150833561575181614c5b565b8252602084013561576181614c5b565b60208301526040840135615774816153cc565b604083015290815260608301359061578b82614c5b565b60208101919091529392505050565b5f602082840312156157aa575f5ffd5b81516126c081614ca6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f82600f0b82600f0b0280600f0b9150808214610c4257610c426157b5565b5f8260020b80615813576158136156ae565b808360020b0791505092915050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff82131715610602576106026157b5565b80820180821115610602576106026157b5565b81810381811115610602576106026157b5565b8082028115828204841417610602576106026157b5565b6fffffffffffffffffffffffffffffffff8181168382160190811115610602576106026157b5565b6fffffffffffffffffffffffffffffffff8281168282160390811115610602576106026157b5565b5f81600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008103615931576159316157b5565b5f0392915050565b5f60208284031215615949575f5ffd5b81516126c0816153cc565b73ffffffffffffffffffffffffffffffffffffffff86168152841515602082015283604082015273ffffffffffffffffffffffffffffffffffffffff8316606082015260a060808201525f61233a60a083018461517c565b5f5f604083850312156159bd575f5ffd5b505080516020909101519092909150565b5f5f5f5f5f5f5f5f610100898b0312156159e6575f5ffd5b88516159f181614e57565b80985050602089015180600f0b8114615a08575f5ffd5b60408a015160608b015160808c01519299509097509550600681900b8114615a2e575f5ffd5b60a08a0151909450615a3f81614c5b565b60c08a015190935063ffffffff81168114615a58575f5ffd5b9150615a6660e08a016155ff565b90509295985092959890939650565b73ffffffffffffffffffffffffffffffffffffffff861681528460020b60208201528360020b60408201526fffffffffffffffffffffffffffffffff8316606082015260a060808201525f61233a60a083018461517c565b5f5f60408385031215615ade575f5ffd5b8251615ae981614e57565b602084015190925061513281614e57565b5f5f5f5f5f60a08688031215615b0e575f5ffd5b8551615b1981614e57565b6020870151604088015160608901519297509095509350615b3981614e57565b6080870151909250615b4a81614e57565b809150509295509295909350565b5f8260020b8260020b028060020b9150808214610c4257610c426157b5565b5f8160020b8360020b80615b8d57615b8d6156ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083141615615be157615be16157b5565b90059392505050565b62ffffff8181168382160290811690818114610c4257610c426157b556fea2646970667358221220a83967de7ff97ce8f46002ec98d90451f289b564c36b9cae9d09e7f80035298b64736f6c634300081c00330000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000000000000000000000000071d75ab9b9205000000000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Signatures
0x5af422d4729a469aee140c8346d5ffa7e9c24d4302c84609499243e11f7942175bc26a1fd5e9a493442260c7aba716966b9decbff26842f288c32ab64846cd801c689ecea65ac0123fb0159a1e6a3e517bb4c4657b1a0ce08d930439c8f49f14b82bdd2cba62eee73d9bfee95daf09670fe1f5c2c61acb0f62d585422e57f107f61c0dbba1c7d7168574655e979511c7038484a163795198ce0c3d06c888c47a07871e0b103bad67c240c5a5a3da4faaa7f315e5c93fe4ce681f312cd87f826c1a041c