60806040523480156200001157600080fd5b506040516200464e3803806200464e83398181016040528101906200003791906200080b565b6040518060600160405280602281526020016200462c6022913962000062816200010160201b60201c565b5062000083620000776200011660201b60201c565b6200011e60201b60201c565b6000600360146101000a81548160ff0219169083151502179055508060049081620000af919062000aa7565b50620000fa336001806040518060400160405280600b81526020017f466972737420546f6b656e000000000000000000000000000000000000000000815250620001e460201b60201c565b5062001105565b806002908162000112919062000aa7565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000256576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024d9062000c15565b60405180910390fd5b6000620002686200011660201b60201c565b905060006200027d85620003cb60201b60201c565b905060006200029285620003cb60201b60201c565b9050620002ab836000898585896200044c60201b60201c565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200030c919062000c66565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516200038c92919062000cb2565b60405180910390a4620003ab836000898585896200045460201b60201c565b620003c2836000898989896200045c60201b60201c565b50505050505050565b60606000600167ffffffffffffffff811115620003ed57620003ec620006a7565b5b6040519080825280602002602001820160405280156200041c5781602001602082028036833780820191505090505b509050828160008151811062000437576200043662000cdf565b5b60200260200101818152505080915050919050565b505050505050565b505050505050565b620004888473ffffffffffffffffffffffffffffffffffffffff166200065560201b62000b511760201c565b156200064d578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401620004d195949392919062000db0565b6020604051808303816000875af19250505080156200051057506040513d601f19601f820116820180604052508101906200050d919062000e71565b60015b620005c1576200051f62000eb0565b806308c379a0036200058257506200053662000ed5565b8062000543575062000584565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000579919062000fb1565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005b8906200104b565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146200064b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064290620010e3565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620006e18262000696565b810181811067ffffffffffffffff82111715620007035762000702620006a7565b5b80604052505050565b60006200071862000678565b9050620007268282620006d6565b919050565b600067ffffffffffffffff821115620007495762000748620006a7565b5b620007548262000696565b9050602081019050919050565b60005b838110156200078157808201518184015260208101905062000764565b60008484015250505050565b6000620007a46200079e846200072b565b6200070c565b905082815260208101848484011115620007c357620007c262000691565b5b620007d084828562000761565b509392505050565b600082601f830112620007f057620007ef6200068c565b5b8151620008028482602086016200078d565b91505092915050565b60006020828403121562000824576200082362000682565b5b600082015167ffffffffffffffff81111562000845576200084462000687565b5b6200085384828501620007d8565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008af57607f821691505b602082108103620008c557620008c462000867565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200092f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008f0565b6200093b8683620008f0565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000988620009826200097c8462000953565b6200095d565b62000953565b9050919050565b6000819050919050565b620009a48362000967565b620009bc620009b3826200098f565b848454620008fd565b825550505050565b600090565b620009d3620009c4565b620009e081848462000999565b505050565b5b8181101562000a0857620009fc600082620009c9565b600181019050620009e6565b5050565b601f82111562000a575762000a2181620008cb565b62000a2c84620008e0565b8101602085101562000a3c578190505b62000a5462000a4b85620008e0565b830182620009e5565b50505b505050565b600082821c905092915050565b600062000a7c6000198460080262000a5c565b1980831691505092915050565b600062000a97838362000a69565b9150826002028217905092915050565b62000ab2826200085c565b67ffffffffffffffff81111562000ace5762000acd620006a7565b5b62000ada825462000896565b62000ae782828562000a0c565b600060209050601f83116001811462000b1f576000841562000b0a578287015190505b62000b16858262000a89565b86555062000b86565b601f19841662000b2f86620008cb565b60005b8281101562000b595784890151825560018201915060208501945060208101905062000b32565b8683101562000b79578489015162000b75601f89168262000a69565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600062000bfd60218362000b8e565b915062000c0a8262000b9f565b604082019050919050565b6000602082019050818103600083015262000c308162000bee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c738262000953565b915062000c808362000953565b925082820190508082111562000c9b5762000c9a62000c37565b5b92915050565b62000cac8162000953565b82525050565b600060408201905062000cc9600083018562000ca1565b62000cd8602083018462000ca1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d3b8262000d0e565b9050919050565b62000d4d8162000d2e565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000d7c8262000d53565b62000d88818562000d5e565b935062000d9a81856020860162000761565b62000da58162000696565b840191505092915050565b600060a08201905062000dc7600083018862000d42565b62000dd6602083018762000d42565b62000de5604083018662000ca1565b62000df4606083018562000ca1565b818103608083015262000e08818462000d6f565b90509695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62000e4b8162000e14565b811462000e5757600080fd5b50565b60008151905062000e6b8162000e40565b92915050565b60006020828403121562000e8a5762000e8962000682565b5b600062000e9a8482850162000e5a565b91505092915050565b60008160e01c9050919050565b600060033d111562000ed25760046000803e62000ecf60005162000ea3565b90505b90565b600060443d1062000f6d5762000eea62000678565b60043d036004823e80513d602482011167ffffffffffffffff8211171562000f1457505062000f6d565b808201805167ffffffffffffffff81111562000f34575050505062000f6d565b80602083010160043d03850181111562000f5357505050505062000f6d565b62000f6482602001850186620006d6565b82955050505050505b90565b600062000f7d826200085c565b62000f89818562000b8e565b935062000f9b81856020860162000761565b62000fa68162000696565b840191505092915050565b6000602082019050818103600083015262000fcd818462000f70565b905092915050565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b60006200103360348362000b8e565b9150620010408262000fd5565b604082019050919050565b60006020820190508181036000830152620010668162001024565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000620010cb60288362000b8e565b9150620010d8826200106d565b604082019050919050565b60006020820190508181036000830152620010fe81620010bc565b9050919050565b61351780620011156000396000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c80636b20c45411610097578063e985e9c511610066578063e985e9c514610298578063f242432a146102c8578063f2fde38b146102e4578063f5298aca14610300576100ff565b80636b20c45414610238578063715018a6146102545780638da5cb5b1461025e578063a22cb4651461027c576100ff565b8063156e29f6116100d3578063156e29f6146101b25780632eb2c2d6146101ce5780634e1273f4146101ea5780635c975abb1461021a576100ff565b8062fdd58e1461010457806301ffc9a71461013457806306fdde03146101645780630e89341c14610182575b600080fd5b61011e60048036038101906101199190611ff6565b61031c565b60405161012b9190612045565b60405180910390f35b61014e600480360381019061014991906120b8565b6103e4565b60405161015b9190612100565b60405180910390f35b61016c6104c6565b60405161017991906121ab565b60405180910390f35b61019c600480360381019061019791906121cd565b610558565b6040516101a991906121ab565b60405180910390f35b6101cc60048036038101906101c791906121fa565b6105ec565b005b6101e860048036038101906101e3919061244a565b61063a565b005b61020460048036038101906101ff91906125dc565b6106db565b6040516102119190612712565b60405180910390f35b6102226107f4565b60405161022f9190612100565b60405180910390f35b610252600480360381019061024d9190612734565b61080b565b005b61025c6108a8565b005b6102666108bc565b60405161027391906127ce565b60405180910390f35b61029660048036038101906102919190612815565b6108e6565b005b6102b260048036038101906102ad9190612855565b6108fc565b6040516102bf9190612100565b60405180910390f35b6102e260048036038101906102dd9190612895565b610990565b005b6102fe60048036038101906102f9919061292c565b610a31565b005b61031a600480360381019061031591906121fa565b610ab4565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361038c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610383906129cb565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104af57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104bf57506104be82610b74565b5b9050919050565b6060600480546104d590612a1a565b80601f016020809104026020016040519081016040528092919081815260200182805461050190612a1a565b801561054e5780601f106105235761010080835404028352916020019161054e565b820191906000526020600020905b81548152906001019060200180831161053157829003601f168201915b5050505050905090565b60606002805461056790612a1a565b80601f016020809104026020016040519081016040528092919081815260200182805461059390612a1a565b80156105e05780601f106105b5576101008083540402835291602001916105e0565b820191906000526020600020905b8154815290600101906020018083116105c357829003601f168201915b50505050509050919050565b6105f4610bde565b6106358383836040518060400160405280600281526020017f3078000000000000000000000000000000000000000000000000000000000000815250610c5c565b505050565b610642610e0c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610688575061068785610682610e0c565b6108fc565b5b6106c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106be90612abd565b60405180910390fd5b6106d48585858585610e14565b5050505050565b60608151835114610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071890612b4f565b60405180910390fd5b6000835167ffffffffffffffff81111561073e5761073d612252565b5b60405190808252806020026020018201604052801561076c5781602001602082028036833780820191505090505b50905060005b84518110156107e9576107b985828151811061079157610790612b6f565b5b60200260200101518583815181106107ac576107ab612b6f565b5b602002602001015161031c565b8282815181106107cc576107cb612b6f565b5b602002602001018181525050806107e290612bcd565b9050610772565b508091505092915050565b6000600360149054906101000a900460ff16905090565b610813610e0c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610859575061085883610853610e0c565b6108fc565b5b610898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088f90612abd565b60405180910390fd5b6108a3838383611135565b505050565b6108b0610bde565b6108ba6000611403565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108f86108f1610e0c565b83836114c9565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610998610e0c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806109de57506109dd856109d8610e0c565b6108fc565b5b610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1490612abd565b60405180910390fd5b610a2a8585858585611635565b5050505050565b610a39610bde565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9f90612c87565b60405180910390fd5b610ab181611403565b50565b610abc610e0c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610b025750610b0183610afc610e0c565b6108fc565b5b610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3890612abd565b60405180910390fd5b610b4c8383836118d0565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610be6610e0c565b73ffffffffffffffffffffffffffffffffffffffff16610c046108bc565b73ffffffffffffffffffffffffffffffffffffffff1614610c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5190612cf3565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc290612d85565b60405180910390fd5b6000610cd5610e0c565b90506000610ce285611b16565b90506000610cef85611b16565b9050610d0083600089858589611b90565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d5f9190612da5565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051610ddd929190612dd9565b60405180910390a4610df483600089858589611b98565b610e0383600089898989611ba0565b50505050505050565b600033905090565b8151835114610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4f90612e74565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebe90612f06565b60405180910390fd5b6000610ed1610e0c565b9050610ee1818787878787611b90565b60005b8451811015611092576000858281518110610f0257610f01612b6f565b5b602002602001015190506000858381518110610f2157610f20612b6f565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990612f98565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110779190612da5565b925050819055505050508061108b90612bcd565b9050610ee4565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611109929190612fb8565b60405180910390a461111f818787878787611b98565b61112d818787878787611d77565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119b90613061565b60405180910390fd5b80518251146111e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111df90612e74565b60405180910390fd5b60006111f2610e0c565b905061121281856000868660405180602001604052806000815250611b90565b60005b835181101561135f57600084828151811061123357611232612b6f565b5b60200260200101519050600084838151811061125257611251612b6f565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea906130f3565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050808061135790612bcd565b915050611215565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516113d7929190612fb8565b60405180910390a46113fd81856000868660405180602001604052806000815250611b98565b50505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e90613185565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116289190612100565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90612f06565b60405180910390fd5b60006116ae610e0c565b905060006116bb85611b16565b905060006116c885611b16565b90506116d8838989858589611b90565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508581101561176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690612f98565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118249190612da5565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a6040516118a1929190612dd9565b60405180910390a46118b7848a8a86868a611b98565b6118c5848a8a8a8a8a611ba0565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613061565b60405180910390fd5b6000611949610e0c565b9050600061195684611b16565b9050600061196384611b16565b905061198383876000858560405180602001604052806000815250611b90565b600080600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a11906130f3565b60405180910390fd5b84810360008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611ae7929190612dd9565b60405180910390a4611b0d84886000868660405180602001604052806000815250611b98565b50505050505050565b60606000600167ffffffffffffffff811115611b3557611b34612252565b5b604051908082528060200260200182016040528015611b635781602001602082028036833780820191505090505b5090508281600081518110611b7b57611b7a612b6f565b5b60200260200101818152505080915050919050565b505050505050565b505050505050565b611bbf8473ffffffffffffffffffffffffffffffffffffffff16610b51565b15611d6f578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611c059594939291906131fa565b6020604051808303816000875af1925050508015611c4157506040513d601f19601f82011682018060405250810190611c3e9190613269565b60015b611ce657611c4d6132a3565b806308c379a003611ca95750611c616132c5565b80611c6c5750611cab565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca091906121ab565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdd906133c7565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6490613459565b60405180910390fd5b505b505050505050565b611d968473ffffffffffffffffffffffffffffffffffffffff16610b51565b15611f46578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611ddc959493929190613479565b6020604051808303816000875af1925050508015611e1857506040513d601f19601f82011682018060405250810190611e159190613269565b60015b611ebd57611e246132a3565b806308c379a003611e805750611e386132c5565b80611e435750611e82565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7791906121ab565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb4906133c7565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90613459565b60405180910390fd5b505b505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f8d82611f62565b9050919050565b611f9d81611f82565b8114611fa857600080fd5b50565b600081359050611fba81611f94565b92915050565b6000819050919050565b611fd381611fc0565b8114611fde57600080fd5b50565b600081359050611ff081611fca565b92915050565b6000806040838503121561200d5761200c611f58565b5b600061201b85828601611fab565b925050602061202c85828601611fe1565b9150509250929050565b61203f81611fc0565b82525050565b600060208201905061205a6000830184612036565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61209581612060565b81146120a057600080fd5b50565b6000813590506120b28161208c565b92915050565b6000602082840312156120ce576120cd611f58565b5b60006120dc848285016120a3565b91505092915050565b60008115159050919050565b6120fa816120e5565b82525050565b600060208201905061211560008301846120f1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561215557808201518184015260208101905061213a565b60008484015250505050565b6000601f19601f8301169050919050565b600061217d8261211b565b6121878185612126565b9350612197818560208601612137565b6121a081612161565b840191505092915050565b600060208201905081810360008301526121c58184612172565b905092915050565b6000602082840312156121e3576121e2611f58565b5b60006121f184828501611fe1565b91505092915050565b60008060006060848603121561221357612212611f58565b5b600061222186828701611fab565b935050602061223286828701611fe1565b925050604061224386828701611fe1565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61228a82612161565b810181811067ffffffffffffffff821117156122a9576122a8612252565b5b80604052505050565b60006122bc611f4e565b90506122c88282612281565b919050565b600067ffffffffffffffff8211156122e8576122e7612252565b5b602082029050602081019050919050565b600080fd5b600061231161230c846122cd565b6122b2565b90508083825260208201905060208402830185811115612334576123336122f9565b5b835b8181101561235d57806123498882611fe1565b845260208401935050602081019050612336565b5050509392505050565b600082601f83011261237c5761237b61224d565b5b813561238c8482602086016122fe565b91505092915050565b600080fd5b600067ffffffffffffffff8211156123b5576123b4612252565b5b6123be82612161565b9050602081019050919050565b82818337600083830152505050565b60006123ed6123e88461239a565b6122b2565b90508281526020810184848401111561240957612408612395565b5b6124148482856123cb565b509392505050565b600082601f8301126124315761243061224d565b5b81356124418482602086016123da565b91505092915050565b600080600080600060a0868803121561246657612465611f58565b5b600061247488828901611fab565b955050602061248588828901611fab565b945050604086013567ffffffffffffffff8111156124a6576124a5611f5d565b5b6124b288828901612367565b935050606086013567ffffffffffffffff8111156124d3576124d2611f5d565b5b6124df88828901612367565b925050608086013567ffffffffffffffff811115612500576124ff611f5d565b5b61250c8882890161241c565b9150509295509295909350565b600067ffffffffffffffff82111561253457612533612252565b5b602082029050602081019050919050565b600061255861255384612519565b6122b2565b9050808382526020820190506020840283018581111561257b5761257a6122f9565b5b835b818110156125a457806125908882611fab565b84526020840193505060208101905061257d565b5050509392505050565b600082601f8301126125c3576125c261224d565b5b81356125d3848260208601612545565b91505092915050565b600080604083850312156125f3576125f2611f58565b5b600083013567ffffffffffffffff81111561261157612610611f5d565b5b61261d858286016125ae565b925050602083013567ffffffffffffffff81111561263e5761263d611f5d565b5b61264a85828601612367565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61268981611fc0565b82525050565b600061269b8383612680565b60208301905092915050565b6000602082019050919050565b60006126bf82612654565b6126c9818561265f565b93506126d483612670565b8060005b838110156127055781516126ec888261268f565b97506126f7836126a7565b9250506001810190506126d8565b5085935050505092915050565b6000602082019050818103600083015261272c81846126b4565b905092915050565b60008060006060848603121561274d5761274c611f58565b5b600061275b86828701611fab565b935050602084013567ffffffffffffffff81111561277c5761277b611f5d565b5b61278886828701612367565b925050604084013567ffffffffffffffff8111156127a9576127a8611f5d565b5b6127b586828701612367565b9150509250925092565b6127c881611f82565b82525050565b60006020820190506127e360008301846127bf565b92915050565b6127f2816120e5565b81146127fd57600080fd5b50565b60008135905061280f816127e9565b92915050565b6000806040838503121561282c5761282b611f58565b5b600061283a85828601611fab565b925050602061284b85828601612800565b9150509250929050565b6000806040838503121561286c5761286b611f58565b5b600061287a85828601611fab565b925050602061288b85828601611fab565b9150509250929050565b600080600080600060a086880312156128b1576128b0611f58565b5b60006128bf88828901611fab565b95505060206128d088828901611fab565b94505060406128e188828901611fe1565b93505060606128f288828901611fe1565b925050608086013567ffffffffffffffff81111561291357612912611f5d565b5b61291f8882890161241c565b9150509295509295909350565b60006020828403121561294257612941611f58565b5b600061295084828501611fab565b91505092915050565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b60006129b5602a83612126565b91506129c082612959565b604082019050919050565b600060208201905081810360008301526129e4816129a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a3257607f821691505b602082108103612a4557612a446129eb565b5b50919050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b6000612aa7602e83612126565b9150612ab282612a4b565b604082019050919050565b60006020820190508181036000830152612ad681612a9a565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b6000612b39602983612126565b9150612b4482612add565b604082019050919050565b60006020820190508181036000830152612b6881612b2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612bd882611fc0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c0a57612c09612b9e565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612c71602683612126565b9150612c7c82612c15565b604082019050919050565b60006020820190508181036000830152612ca081612c64565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612cdd602083612126565b9150612ce882612ca7565b602082019050919050565b60006020820190508181036000830152612d0c81612cd0565b9050919050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d6f602183612126565b9150612d7a82612d13565b604082019050919050565b60006020820190508181036000830152612d9e81612d62565b9050919050565b6000612db082611fc0565b9150612dbb83611fc0565b9250828201905080821115612dd357612dd2612b9e565b5b92915050565b6000604082019050612dee6000830185612036565b612dfb6020830184612036565b9392505050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b6000612e5e602883612126565b9150612e6982612e02565b604082019050919050565b60006020820190508181036000830152612e8d81612e51565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612ef0602583612126565b9150612efb82612e94565b604082019050919050565b60006020820190508181036000830152612f1f81612ee3565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000612f82602a83612126565b9150612f8d82612f26565b604082019050919050565b60006020820190508181036000830152612fb181612f75565b9050919050565b60006040820190508181036000830152612fd281856126b4565b90508181036020830152612fe681846126b4565b90509392505050565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061304b602383612126565b915061305682612fef565b604082019050919050565b6000602082019050818103600083015261307a8161303e565b9050919050565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b60006130dd602483612126565b91506130e882613081565b604082019050919050565b6000602082019050818103600083015261310c816130d0565b9050919050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b600061316f602983612126565b915061317a82613113565b604082019050919050565b6000602082019050818103600083015261319e81613162565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006131cc826131a5565b6131d681856131b0565b93506131e6818560208601612137565b6131ef81612161565b840191505092915050565b600060a08201905061320f60008301886127bf565b61321c60208301876127bf565b6132296040830186612036565b6132366060830185612036565b818103608083015261324881846131c1565b90509695505050505050565b6000815190506132638161208c565b92915050565b60006020828403121561327f5761327e611f58565b5b600061328d84828501613254565b91505092915050565b60008160e01c9050919050565b600060033d11156132c25760046000803e6132bf600051613296565b90505b90565b600060443d10613352576132d7611f4e565b60043d036004823e80513d602482011167ffffffffffffffff821117156132ff575050613352565b808201805167ffffffffffffffff81111561331d5750505050613352565b80602083010160043d03850181111561333a575050505050613352565b61334982602001850186612281565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b60006133b1603483612126565b91506133bc82613355565b604082019050919050565b600060208201905081810360008301526133e0816133a4565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000613443602883612126565b915061344e826133e7565b604082019050919050565b6000602082019050818103600083015261347281613436565b9050919050565b600060a08201905061348e60008301886127bf565b61349b60208301876127bf565b81810360408301526134ad81866126b4565b905081810360608301526134c181856126b4565b905081810360808301526134d581846131c1565b9050969550505050505056fea2646970667358221220415c64d81187f95bfa5f95fb3f02d6f5d6ba14546f1584276a1cfb6c04b5d06c64736f6c6343000812003368747470733a2f2f657263313135352e667265652e626565636570746f722e636f6d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000154b696c6c756120636f6c6c656374696f6e202d20320000000000000000000000