60806040523480156200001157600080fd5b506040516200396a3803806200396a833981016040819052620000349162000491565b6040518060400160405280601481526020017f50696f6e656572206f6620467573696f6e697374000000000000000000000000815250604051806040016040528060038152602001622827a360e91b815250733cc6cdda760b79bafa08df41ecfa224f810dceb66001620000b7620000b16200024a60201b60201c565b6200024e565b60016003556daaeb6d7670e522a718067333cd4e3b15620002015780156200014f57604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200013057600080fd5b505af115801562000145573d6000803e3d6000fd5b5050505062000201565b6001600160a01b03821615620001a05760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af29039060440162000115565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b158015620001e757600080fd5b505af1158015620001fc573d6000803e3d6000fd5b505050505b506004905062000212838262000616565b50600562000221828262000616565b5050506200023581620002a060201b60201c565b62000242826000620002bc565b5050620006e2565b3390565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620002aa62000318565b600d620002b8828262000616565b5050565b620002c662000318565b6001600160a01b038216620002ee57604051632969679960e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b038416908117909155620002b890826200037a565b6002546001600160a01b03163314620003785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b565b6127106001600160601b0382161115620003ea5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016200036f565b6001600160a01b038216620004425760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016200036f565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600055565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620004a557600080fd5b82516001600160a01b0381168114620004bd57600080fd5b602084810151919350906001600160401b0380821115620004dd57600080fd5b818601915086601f830112620004f257600080fd5b8151818111156200050757620005076200047b565b604051601f8201601f19908116603f011681019083821181831017156200053257620005326200047b565b8160405282815289868487010111156200054b57600080fd5b600093505b828410156200056f578484018601518185018701529285019262000550565b60008684830101528096505050505050509250929050565b600181811c908216806200059c57607f821691505b602082108103620005bd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200061157600081815260208120601f850160051c81016020861015620005ec5750805b601f850160051c820191505b818110156200060d57828155600101620005f8565b5050505b505050565b81516001600160401b038111156200063257620006326200047b565b6200064a8162000643845462000587565b84620005c3565b602080601f831160018114620006825760008415620006695750858301515b600019600386901b1c1916600185901b1785556200060d565b600085815260208120601f198616915b82811015620006b35788860151825594840194600190910190840162000692565b5085821015620006d25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61327880620006f26000396000f3fe6080604052600436106101e35760003560e01c806356ae7fe811610102578063a71f728411610095578063e985e9c511610064578063e985e9c5146105ba578063f2fde38b14610610578063fb495add14610630578063ff3086231461064657600080fd5b8063a71f728414610538578063b88d4fde1461054d578063c5f956af1461056d578063c87b56dd1461059a57600080fd5b80638da5cb5b116100d15780638da5cb5b146104b857806394c845a0146104e357806395d89b4114610503578063a22cb4651461051857600080fd5b806356ae7fe8146104505780636352211e1461046357806370a0823114610483578063715018a6146104a357600080fd5b80632801973e1161017a57806341f434341161014957806341f43434146103d857806342842e0e146103fa5780634f0729ed1461041a57806355f804b31461043057600080fd5b80632801973e146103365780632a55205a1461035657806332cb6b0c146103a257806337cc8d16146103b857600080fd5b8063095ea7b3116101b6578063095ea7b3146102a657806318160ddd146102c65780631d346483146102e957806323b872dd1461031657600080fd5b806301ffc9a7146101e857806302fa7c471461021d57806306fdde031461023f578063081812fc14610261575b600080fd5b3480156101f457600080fd5b506102086102033660046129a6565b6106b4565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d6102383660046129e5565b6106d4565b005b34801561024b57600080fd5b5061025461077a565b6040516102149190612a9d565b34801561026d57600080fd5b5061028161027c366004612ab0565b61080c565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610214565b3480156102b257600080fd5b5061023d6102c1366004612ac9565b610840565b3480156102d257600080fd5b50600e5461ffff165b604051908152602001610214565b3480156102f557600080fd5b50610309610304366004612af5565b610859565b6040516102149190612b12565b34801561032257600080fd5b5061023d610331366004612b56565b610a38565b34801561034257600080fd5b5061023d610351366004612bdc565b610a70565b34801561036257600080fd5b50610376610371366004612c28565b610c5f565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610214565b3480156103ae57600080fd5b506102db61012c81565b3480156103c457600080fd5b5061023d6103d3366004612ab0565b610d58565b3480156103e457600080fd5b506102816daaeb6d7670e522a718067333cd4e81565b34801561040657600080fd5b5061023d610415366004612b56565b610d65565b34801561042657600080fd5b506102db600b5481565b34801561043c57600080fd5b5061023d61044b366004612d0d565b610d97565b61023d61045e366004612d56565b610dab565b34801561046f57600080fd5b5061028161047e366004612ab0565b610fc8565b34801561048f57600080fd5b506102db61049e366004612af5565b611059565b3480156104af57600080fd5b5061023d611127565b3480156104c457600080fd5b5060025473ffffffffffffffffffffffffffffffffffffffff16610281565b3480156104ef57600080fd5b5061023d6104fe366004612ab0565b61113b565b34801561050f57600080fd5b50610254611150565b34801561052457600080fd5b5061023d610533366004612da6565b61115f565b34801561054457600080fd5b5061023d611173565b34801561055957600080fd5b5061023d610568366004612dd4565b611185565b34801561057957600080fd5b50600a546102819073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105a657600080fd5b506102546105b5366004612ab0565b6111bf565b3480156105c657600080fd5b506102086105d5366004612e54565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260096020908152604080832093909416825291909152205460ff1690565b34801561061c57600080fd5b5061023d61062b366004612af5565b611226565b34801561063c57600080fd5b506102db600c5481565b34801561065257600080fd5b5061069d610661366004612af5565b73ffffffffffffffffffffffffffffffffffffffff166000908152600f602090815260408083205460109092529091205460ff91821692911690565b604080519215158352901515602083015201610214565b60006106bf826112dd565b806106ce57506106ce82611374565b92915050565b6106dc611416565b73ffffffffffffffffffffffffffffffffffffffff8216610729576040517f52d2cf3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556107769082611497565b5050565b60606004805461078990612e82565b80601f01602080910402602001604051908101604052809291908181526020018280546107b590612e82565b80156108025780601f106107d757610100808354040283529160200191610802565b820191906000526020600020905b8154815290600101906020018083116107e557829003601f168201915b5050505050905090565b600061081782611610565b5060009081526008602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b8161084a8161169b565b61085483836117a0565b505050565b6060600061086683611059565b905060008167ffffffffffffffff81111561088357610883612c4a565b6040519080825280602002602001820160405280156108ac578160200160208202803683370190505b50905060006001816108c061012c83612f04565b9050815b81811015610965578386146109655760008181526006602052604090205473ffffffffffffffffffffffffffffffffffffffff16156109555760008181526006602052604090205473ffffffffffffffffffffffffffffffffffffffff898116911603610955578085858151811061093e5761093e612f17565b602090810291909101015261095284612f46565b93505b61095e81612f46565b90506108c4565b506109736127106001612f7e565b63ffffffff16915061098761012c83612f04565b9050815b81811015610a2c57838614610a2c5760008181526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1615610a1c5760008181526006602052604090205473ffffffffffffffffffffffffffffffffffffffff898116911603610a1c5780858581518110610a0557610a05612f17565b6020908102919091010152610a1984612f46565b93505b610a2581612f46565b905061098b565b50929695505050505050565b8273ffffffffffffffffffffffffffffffffffffffff81163314610a5f57610a5f3361169b565b610a6a848484611952565b50505050565b610a786119f3565b3380610a8385610fc8565b73ffffffffffffffffffffffffffffffffffffffff1614610ad0576040517fd57632ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff161515600103610b34576040517f14ecb7ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bc1610bb7826040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050919050565b8484600c54611a66565b1515600003610bfb576040517e27b15500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610c538185611a7f565b50506108546001600355565b600082815260016020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16928201929092528291610d1a57506040805180820190915260005473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b602081015160009061271090610d3e906bffffffffffffffffffffffff1687612fa2565b610d489190612fb9565b91519350909150505b9250929050565b610d60611416565b600b55565b8273ffffffffffffffffffffffffffffffffffffffff81163314610d8c57610d8c3361169b565b610a6a848484611ae0565b610d9f611416565b600d6107768282613042565b610db36119f3565b336000818152600f602052604090205460ff161515600103610e01576040517f14ecb7ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e5461012c61ffff90911610610e44576040517fe51add9900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ed1610ec7826040805173ffffffffffffffffffffffffffffffffffffffff8316602082015260009101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050919050565b8484600b54611a66565b1515600003610f0b576040517e27b15500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000908152600f6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600e54610f6d906127109061ffff16612f7e565b610f78906001612f7e565b600e805463ffffffff92909216925090600090610f989061ffff1661315c565b91906101000a81548161ffff021916908361ffff160217905550610fbc8282611afb565b50506107766001600355565b60008181526006602052604081205473ffffffffffffffffffffffffffffffffffffffff16806106ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064015b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff82166110fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401611050565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205490565b61112f611416565b6111396000611d20565b565b611143611416565b61114b611173565b600c55565b60606005805461078990612e82565b816111698161169b565b6108548383611d97565b61117b611416565b6111396000610d58565b8373ffffffffffffffffffffffffffffffffffffffff811633146111ac576111ac3361169b565b6111b885858585611da2565b5050505050565b60606111ca82611610565b60006111d4611e44565b905060008151116111f4576040518060200160405280600081525061121f565b806111fe84611e53565b60405160200161120f92919061317d565b6040516020818303038152906040525b9392505050565b61122e611416565b73ffffffffffffffffffffffffffffffffffffffff81166112d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611050565b6112da81611d20565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a0000000000000000000000000000000000000000000000000000000014806106ce57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106ce565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061140757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806106ce57506106ce826112dd565b60025473ffffffffffffffffffffffffffffffffffffffff163314611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611050565b6127106bffffffffffffffffffffffff82161115611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c655072696365000000000000000000000000000000000000000000006064820152608401611050565b73ffffffffffffffffffffffffffffffffffffffff82166115b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401611050565b6040805180820190915273ffffffffffffffffffffffffffffffffffffffff9092168083526bffffffffffffffffffffffff90911660209092018290527401000000000000000000000000000000000000000090910217600055565b60008181526006602052604090205473ffffffffffffffffffffffffffffffffffffffff166112da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401611050565b6daaeb6d7670e522a718067333cd4e3b156112da576040517fc617113400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa15801561172e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175291906131ac565b6112da576040517fede71dcc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401611050565b60006117ab82610fc8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401611050565b3373ffffffffffffffffffffffffffffffffffffffff821614806118bc575073ffffffffffffffffffffffffffffffffffffffff8116600090815260096020908152604080832033845290915290205460ff165b611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401611050565b6108548383611f11565b61195c3382611fb1565b6119e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401611050565b610854838383612070565b600260035403611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611050565b6002600355565b6000611a748484848861236b565b90505b949350505050565b6000612710821015611abd576040517fc824a12900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ac682612383565b6000611ad4612710846131c9565b905061121f8482611afb565b61085483838360405180602001604052806000815250611185565b73ffffffffffffffffffffffffffffffffffffffff8216611b78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401611050565b60008181526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401611050565b60008181526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611c90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401611050565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260076020908152604080832080546001019055848352600690915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61077633838361245b565b611dac3383611fb1565b611e38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401611050565b610a6a84848484612588565b6060600d805461078990612e82565b60606000611e608361262b565b600101905060008167ffffffffffffffff811115611e8057611e80612c4a565b6040519080825280601f01601f191660200182016040528015611eaa576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611eb457509392505050565b600081815260086020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190611f6b82610fc8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611fbd83610fc8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061202b575073ffffffffffffffffffffffffffffffffffffffff80821660009081526009602090815260408083209388168352929052205460ff165b80611a7757508373ffffffffffffffffffffffffffffffffffffffff166120518461080c565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661209082610fc8565b73ffffffffffffffffffffffffffffffffffffffff1614612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401611050565b73ffffffffffffffffffffffffffffffffffffffff82166121d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401611050565b8273ffffffffffffffffffffffffffffffffffffffff166121f582610fc8565b73ffffffffffffffffffffffffffffffffffffffff1614612298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401611050565b600081815260086020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff8781168086526007855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652600690945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008261237986868561270d565b1495945050505050565b600061238e82610fc8565b905061239982610fc8565b600083815260086020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff85168085526007845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558785526006909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401611050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526009602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612593848484612070565b61259f84848484612759565b610a6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401611050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612674577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106126a0576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106126be57662386f26fc10000830492506010015b6305f5e10083106126d6576305f5e100830492506008015b61271083106126ea57612710830492506004015b606483106126fc576064830492506002015b600a83106106ce5760010192915050565b600081815b848110156127505761273c8287878481811061273057612730612f17565b90506020020135612949565b91508061274881612f46565b915050612712565b50949350505050565b600073ffffffffffffffffffffffffffffffffffffffff84163b15612941576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906127d09033908990889088906004016131dc565b6020604051808303816000875af1925050508015612829575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261282691810190613225565b60015b6128f6573d808015612857576040519150601f19603f3d011682016040523d82523d6000602084013e61285c565b606091505b5080516000036128ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401611050565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611a77565b506001611a77565b600081831061296557600082815260208490526040902061121f565b600083815260208390526040902061121f565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146112da57600080fd5b6000602082840312156129b857600080fd5b813561121f81612978565b73ffffffffffffffffffffffffffffffffffffffff811681146112da57600080fd5b600080604083850312156129f857600080fd5b8235612a03816129c3565b915060208301356bffffffffffffffffffffffff81168114612a2457600080fd5b809150509250929050565b60005b83811015612a4a578181015183820152602001612a32565b50506000910152565b60008151808452612a6b816020860160208601612a2f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061121f6020830184612a53565b600060208284031215612ac257600080fd5b5035919050565b60008060408385031215612adc57600080fd5b8235612ae7816129c3565b946020939093013593505050565b600060208284031215612b0757600080fd5b813561121f816129c3565b6020808252825182820181905260009190848201906040850190845b81811015612b4a57835183529284019291840191600101612b2e565b50909695505050505050565b600080600060608486031215612b6b57600080fd5b8335612b76816129c3565b92506020840135612b86816129c3565b929592945050506040919091013590565b60008083601f840112612ba957600080fd5b50813567ffffffffffffffff811115612bc157600080fd5b6020830191508360208260051b8501011115610d5157600080fd5b600080600060408486031215612bf157600080fd5b83359250602084013567ffffffffffffffff811115612c0f57600080fd5b612c1b86828701612b97565b9497909650939450505050565b60008060408385031215612c3b57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115612c9457612c94612c4a565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612cda57612cda612c4a565b81604052809350858152868686011115612cf357600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215612d1f57600080fd5b813567ffffffffffffffff811115612d3657600080fd5b8201601f81018413612d4757600080fd5b611a7784823560208401612c79565b60008060208385031215612d6957600080fd5b823567ffffffffffffffff811115612d8057600080fd5b612d8c85828601612b97565b90969095509350505050565b80151581146112da57600080fd5b60008060408385031215612db957600080fd5b8235612dc4816129c3565b91506020830135612a2481612d98565b60008060008060808587031215612dea57600080fd5b8435612df5816129c3565b93506020850135612e05816129c3565b925060408501359150606085013567ffffffffffffffff811115612e2857600080fd5b8501601f81018713612e3957600080fd5b612e4887823560208401612c79565b91505092959194509250565b60008060408385031215612e6757600080fd5b8235612e72816129c3565b91506020830135612a24816129c3565b600181811c90821680612e9657607f821691505b602082108103612ecf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156106ce576106ce612ed5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f7757612f77612ed5565b5060010190565b63ffffffff818116838216019080821115612f9b57612f9b612ed5565b5092915050565b80820281158282048414176106ce576106ce612ed5565b600082612fef577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b601f82111561085457600081815260208120601f850160051c8101602086101561301b5750805b601f850160051c820191505b8181101561303a57828155600101613027565b505050505050565b815167ffffffffffffffff81111561305c5761305c612c4a565b6130708161306a8454612e82565b84612ff4565b602080601f8311600181146130c3576000841561308d5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561303a565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613110578886015182559484019460019091019084016130f1565b508582101561314c57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600061ffff80831681810361317357613173612ed5565b6001019392505050565b6000835161318f818460208801612a2f565b8351908301906131a3818360208801612a2f565b01949350505050565b6000602082840312156131be57600080fd5b815161121f81612d98565b818103818111156106ce576106ce612ed5565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261321b6080830184612a53565b9695505050505050565b60006020828403121561323757600080fd5b815161121f8161297856fea26469706673582212203f548d9a5bec267976bbb2dcca63f83a552d473e886170130ff48a44f2bf3f6964736f6c63430008130033000000000000000000000000459c5440e65dc8db5287eccf86080f7a66b0f17600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000043697066733a2f2f626166796265696467686e686768776e63766a66687935366177367a6a6661746a6861717232686f77757a666e70376537337775686b76376534342f0000000000000000000000000000000000000000000000000000000000