6080604052661ff973cafa8000600955611450600a556104b0600b556003600c556001600d556000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff02191690831515021790555060405180602001604052806000815250601190805190602001906200008292919062000240565b503480156200009057600080fd5b506040518060400160405280600a81526020017f44494e4f52455645414c000000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f44494e4f52455645414c0000000000000000000000000000000000000000000081525081600290805190602001906200011592919062000240565b5080600390805190602001906200012e92919062000240565b506200013f6200016d60201b60201c565b6000819055505050620001676200015b6200017260201b60201c565b6200017a60201b60201c565b62000355565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200024e90620002f0565b90600052602060002090601f016020900481019282620002725760008555620002be565b82601f106200028d57805160ff1916838001178555620002be565b82800160010185558215620002be579182015b82811115620002bd578251825591602001919060010190620002a0565b5b509050620002cd9190620002d1565b5090565b5b80821115620002ec576000816000905550600101620002d2565b5090565b600060028204905060018216806200030957607f821691505b6020821081141562000320576200031f62000326565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61403880620003656000396000f3fe60806040526004361061020f5760003560e01c8063729ad39e11610118578063b88d4fde116100a0578063d3dd5fe01161006f578063d3dd5fe014610752578063d5abeb0114610769578063d96a094a14610794578063e985e9c5146107b0578063f2fde38b146107ed5761020f565b8063b88d4fde14610698578063bc337182146106c1578063c81c63ef146106ea578063c87b56dd146107155761020f565b80638da5cb5b116100e75780638da5cb5b146105c557806391b7f5ed146105f057806395d89b4114610619578063a035b1fe14610644578063a22cb4651461066f5761020f565b8063729ad39e1461052c5780637437681e146105555780637cb647591461058057806381814492146105a95761020f565b806330176e131161019b578063596599ae1161016a578063596599ae146104475780636352211e146104725780636f8b44b0146104af57806370a08231146104d8578063715018a6146105155761020f565b806330176e13146103c757806334393743146103f05780633ccfd60b1461040757806342842e0e1461041e5761020f565b806309bd4c31116101e257806309bd4c31146102e257806318160ddd1461030b57806323b872dd1461033657806327b1425a1461035f5780632eb4a7ab1461039c5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190613272565b610816565b604051610248919061369c565b60405180910390f35b34801561025d57600080fd5b506102666108f8565b60405161027391906136d2565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190613319565b61098a565b6040516102b09190613635565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db91906131b8565b610a06565b005b3480156102ee57600080fd5b50610309600480360381019061030491906131b8565b610b0b565b005b34801561031757600080fd5b50610320610b21565b60405161032d9190613834565b60405180910390f35b34801561034257600080fd5b5061035d600480360381019061035891906130a2565b610b38565b005b34801561036b57600080fd5b5061038660048036038101906103819190613035565b610b48565b6040516103939190613834565b60405180910390f35b3480156103a857600080fd5b506103b1610b60565b6040516103be91906136b7565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e991906132cc565b610b66565b005b3480156103fc57600080fd5b50610405610b84565b005b34801561041357600080fd5b5061041c610bb8565b005b34801561042a57600080fd5b50610445600480360381019061044091906130a2565b610c10565b005b34801561045357600080fd5b5061045c610c30565b6040516104699190613834565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190613319565b610c36565b6040516104a69190613635565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190613319565b610c4c565b005b3480156104e457600080fd5b506104ff60048036038101906104fa9190613035565b610c5e565b60405161050c9190613834565b60405180910390f35b34801561052157600080fd5b5061052a610d2e565b005b34801561053857600080fd5b50610553600480360381019061054e91906131f8565b610d42565b005b34801561056157600080fd5b5061056a610da2565b6040516105779190613834565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a29190613245565b610da8565b005b6105c360048036038101906105be9190613346565b610dba565b005b3480156105d157600080fd5b506105da610f7b565b6040516105e79190613635565b60405180910390f35b3480156105fc57600080fd5b5061061760048036038101906106129190613319565b610fa5565b005b34801561062557600080fd5b5061062e610fb7565b60405161063b91906136d2565b60405180910390f35b34801561065057600080fd5b50610659611049565b6040516106669190613834565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190613178565b61104f565b005b3480156106a457600080fd5b506106bf60048036038101906106ba91906130f5565b6111c7565b005b3480156106cd57600080fd5b506106e860048036038101906106e39190613319565b61123f565b005b3480156106f657600080fd5b506106ff611251565b60405161070c9190613834565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190613319565b611257565b60405161074991906136d2565b60405180910390f35b34801561075e57600080fd5b506107676112f6565b005b34801561077557600080fd5b5061077e61132a565b60405161078b9190613834565b60405180910390f35b6107ae60048036038101906107a99190613319565b611330565b005b3480156107bc57600080fd5b506107d760048036038101906107d29190613062565b6114f8565b6040516107e4919061369c565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190613035565b61158c565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108e157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108f157506108f082611610565b5b9050919050565b60606002805461090790613ae9565b80601f016020809104026020016040519081016040528092919081815260200182805461093390613ae9565b80156109805780601f1061095557610100808354040283529160200191610980565b820191906000526020600020905b81548152906001019060200180831161096357829003601f168201915b5050505050905090565b60006109958261167a565b6109cb576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a1182610c36565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a79576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a986116c8565b73ffffffffffffffffffffffffffffffffffffffff1614610afb57610ac481610abf6116c8565b6114f8565b610afa576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b610b068383836116d0565b505050565b610b13611782565b610b1d8282611800565b5050565b6000610b2b611865565b6001546000540303905090565b610b4383838361186a565b505050565b60106020528060005260406000206000915090505481565b600e5481565b610b6e611782565b818160119190610b7f929190612d17565b505050565b610b8c611782565b600f60019054906101000a900460ff1615600f60016101000a81548160ff021916908315150217905550565b610bc0611782565b610bc86116c8565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610c0d573d6000803e3d6000fd5b50565b610c2b838383604051806020016040528060008152506111c7565b505050565b600b5481565b6000610c4182611d20565b600001519050919050565b610c54611782565b80600a8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cc6576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610d36611782565b610d406000611fab565b565b610d4a611782565b60005b82829050811015610d9d57610d8a838383818110610d6e57610d6d613c77565b5b9050602002016020810190610d839190613035565b6001612071565b8080610d9590613b4c565b915050610d4d565b505050565b600c5481565b610db0611782565b80600e8190555050565b600f60019054906101000a900460ff16610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090613814565b60405180910390fd5b600d5482601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e579190613914565b1115610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90613774565b60405180910390fd5b81601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee39190613914565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f2f8161208f565b610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f65906137b4565b60405180910390fd5b610f77826120d0565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fad611782565b8060098190555050565b606060038054610fc690613ae9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff290613ae9565b801561103f5780601f106110145761010080835404028352916020019161103f565b820191906000526020600020905b81548152906001019060200180831161102257829003601f168201915b5050505050905090565b60095481565b6110576116c8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110bc576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006110c96116c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166111766116c8565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111bb919061369c565b60405180910390a35050565b6111d284848461186a565b6111f18373ffffffffffffffffffffffffffffffffffffffff1661218c565b1561123957611202848484846121af565b611238576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b611247611782565b80600c8190555050565b600d5481565b60606112628261167a565b611298576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112a261230f565b90506000815114156112c357604051806020016040528060008152506112ee565b806112cd846123a1565b6040516020016112de929190613611565b6040516020818303038152906040525b915050919050565b6112fe611782565b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b600a5481565b600f60009054906101000a900460ff1661137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690613814565b60405180910390fd5b600c5481601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113cd9190613914565b111561140e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611405906137f4565b60405180910390fd5b8060095461141c919061399b565b34101561145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145590613734565b60405180910390fd5b80601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a99190613914565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114f581612502565b50565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611594611782565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb906136f4565b60405180910390fd5b61160d81611fab565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611685611865565b11158015611694575060005482105b80156116c1575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b61178a6116c8565b73ffffffffffffffffffffffffffffffffffffffff166117a8610f7b565b73ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f590613794565b60405180910390fd5b565b600a5461180b610b21565b826118169190613914565b1115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e906137d4565b60405180910390fd5b61186182826125be565b5050565b600090565b600061187582611d20565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146118e0576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166119016116c8565b73ffffffffffffffffffffffffffffffffffffffff161480611930575061192f8561192a6116c8565b6114f8565b5b80611975575061193e6116c8565b73ffffffffffffffffffffffffffffffffffffffff1661195d8461098a565b73ffffffffffffffffffffffffffffffffffffffff16145b9050806119ae576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611a15576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a22858585600161289a565b611a2e600084876116d0565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611cae576000548214611cad57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d1985858560016128a0565b5050505050565b611d28612d9d565b600082905080611d36611865565b11611f7457600054811015611f73576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151611f7157600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611e55578092505050611fa6565b5b600115611f7057818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611f6b578092505050611fa6565b611e56565b5b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61208b8282604051806020016040528060008152506128a6565b5050565b600080336040516020016120a391906135f6565b6040516020818303038152906040528051906020012090506120c883600e5483612c68565b915050919050565b600d5481111580156120e25750600081115b612121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211890613714565b60405180910390fd5b600b548161212d610b21565b6121379190613914565b1115612178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216f90613754565b60405180910390fd5b6121896121836116c8565b82611800565b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121d56116c8565b8786866040518563ffffffff1660e01b81526004016121f79493929190613650565b602060405180830381600087803b15801561221157600080fd5b505af192505050801561224257506040513d601f19601f8201168201806040525081019061223f919061329f565b60015b6122bc573d8060008114612272576040519150601f19603f3d011682016040523d82523d6000602084013e612277565b606091505b506000815114156122b4576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606011805461231e90613ae9565b80601f016020809104026020016040519081016040528092919081815260200182805461234a90613ae9565b80156123975780601f1061236c57610100808354040283529160200191612397565b820191906000526020600020905b81548152906001019060200180831161237a57829003601f168201915b5050505050905090565b606060008214156123e9576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506124fd565b600082905060005b6000821461241b57808061240490613b4c565b915050600a82612414919061396a565b91506123f1565b60008167ffffffffffffffff81111561243757612436613ca6565b5b6040519080825280601f01601f1916602001820160405280156124695781602001600182028036833780820191505090505b5090505b600085146124f65760018261248291906139f5565b9150600a856124919190613bb9565b603061249d9190613914565b60f81b8183815181106124b3576124b2613c77565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856124ef919061396a565b945061246d565b8093505050505b919050565b600c5481111580156125145750600081115b612553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254a90613714565b60405180910390fd5b600a548161255f610b21565b6125699190613914565b11156125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a190613754565b60405180910390fd5b6125bb6125b56116c8565b82611800565b50565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561262b576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415612666576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612673600084838561289a565b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550826004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600083820190505b818060010192508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082106128165781600081905550505061289560008483856128a0565b505050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612913576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083141561294e576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61295b600085838661289a565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008482019050612b1c8673ffffffffffffffffffffffffffffffffffffffff1661218c565b15612be1575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612b9160008784806001019550876121af565b612bc7576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808210612b22578260005414612bdc57600080fd5b612c4c565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808210612be2575b816000819055505050612c6260008583866128a0565b50505050565b600082612c758584612c7f565b1490509392505050565b60008082905060005b8451811015612cca57612cb582868381518110612ca857612ca7613c77565b5b6020026020010151612cd5565b91508080612cc290613b4c565b915050612c88565b508091505092915050565b6000818310612ced57612ce88284612d00565b612cf8565b612cf78383612d00565b5b905092915050565b600082600052816020526040600020905092915050565b828054612d2390613ae9565b90600052602060002090601f016020900481019282612d455760008555612d8c565b82601f10612d5e57803560ff1916838001178555612d8c565b82800160010185558215612d8c579182015b82811115612d8b578235825591602001919060010190612d70565b5b509050612d999190612de0565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115612df9576000816000905550600101612de1565b5090565b6000612e10612e0b84613874565b61384f565b90508083825260208201905082856020860282011115612e3357612e32613cdf565b5b60005b85811015612e635781612e498882612f5d565b845260208401935060208301925050600181019050612e36565b5050509392505050565b6000612e80612e7b846138a0565b61384f565b905082815260208101848484011115612e9c57612e9b613ce4565b5b612ea7848285613aa7565b509392505050565b600081359050612ebe81613f8f565b92915050565b60008083601f840112612eda57612ed9613cda565b5b8235905067ffffffffffffffff811115612ef757612ef6613cd5565b5b602083019150836020820283011115612f1357612f12613cdf565b5b9250929050565b600082601f830112612f2f57612f2e613cda565b5b8135612f3f848260208601612dfd565b91505092915050565b600081359050612f5781613fa6565b92915050565b600081359050612f6c81613fbd565b92915050565b600081359050612f8181613fd4565b92915050565b600081519050612f9681613fd4565b92915050565b600082601f830112612fb157612fb0613cda565b5b8135612fc1848260208601612e6d565b91505092915050565b60008083601f840112612fe057612fdf613cda565b5b8235905067ffffffffffffffff811115612ffd57612ffc613cd5565b5b60208301915083600182028301111561301957613018613cdf565b5b9250929050565b60008135905061302f81613feb565b92915050565b60006020828403121561304b5761304a613cee565b5b600061305984828501612eaf565b91505092915050565b6000806040838503121561307957613078613cee565b5b600061308785828601612eaf565b925050602061309885828601612eaf565b9150509250929050565b6000806000606084860312156130bb576130ba613cee565b5b60006130c986828701612eaf565b93505060206130da86828701612eaf565b92505060406130eb86828701613020565b9150509250925092565b6000806000806080858703121561310f5761310e613cee565b5b600061311d87828801612eaf565b945050602061312e87828801612eaf565b935050604061313f87828801613020565b925050606085013567ffffffffffffffff8111156131605761315f613ce9565b5b61316c87828801612f9c565b91505092959194509250565b6000806040838503121561318f5761318e613cee565b5b600061319d85828601612eaf565b92505060206131ae85828601612f48565b9150509250929050565b600080604083850312156131cf576131ce613cee565b5b60006131dd85828601612eaf565b92505060206131ee85828601613020565b9150509250929050565b6000806020838503121561320f5761320e613cee565b5b600083013567ffffffffffffffff81111561322d5761322c613ce9565b5b61323985828601612ec4565b92509250509250929050565b60006020828403121561325b5761325a613cee565b5b600061326984828501612f5d565b91505092915050565b60006020828403121561328857613287613cee565b5b600061329684828501612f72565b91505092915050565b6000602082840312156132b5576132b4613cee565b5b60006132c384828501612f87565b91505092915050565b600080602083850312156132e3576132e2613cee565b5b600083013567ffffffffffffffff81111561330157613300613ce9565b5b61330d85828601612fca565b92509250509250929050565b60006020828403121561332f5761332e613cee565b5b600061333d84828501613020565b91505092915050565b6000806040838503121561335d5761335c613cee565b5b600061336b85828601613020565b925050602083013567ffffffffffffffff81111561338c5761338b613ce9565b5b61339885828601612f1a565b9150509250929050565b6133ab81613a29565b82525050565b6133c26133bd82613a29565b613b95565b82525050565b6133d181613a3b565b82525050565b6133e081613a47565b82525050565b60006133f1826138d1565b6133fb81856138e7565b935061340b818560208601613ab6565b61341481613cf3565b840191505092915050565b600061342a826138dc565b61343481856138f8565b9350613444818560208601613ab6565b61344d81613cf3565b840191505092915050565b6000613463826138dc565b61346d8185613909565b935061347d818560208601613ab6565b80840191505092915050565b60006134966026836138f8565b91506134a182613d11565b604082019050919050565b60006134b96024836138f8565b91506134c482613d60565b604082019050919050565b60006134dc6016836138f8565b91506134e782613daf565b602082019050919050565b60006134ff6012836138f8565b915061350a82613dd8565b602082019050919050565b6000613522603d836138f8565b915061352d82613e01565b604082019050919050565b60006135456020836138f8565b915061355082613e50565b602082019050919050565b60006135686025836138f8565b915061357382613e79565b604082019050919050565b600061358b6021836138f8565b915061359682613ec8565b604082019050919050565b60006135ae6022836138f8565b91506135b982613f17565b604082019050919050565b60006135d16015836138f8565b91506135dc82613f66565b602082019050919050565b6135f081613a9d565b82525050565b600061360282846133b1565b60148201915081905092915050565b600061361d8285613458565b91506136298284613458565b91508190509392505050565b600060208201905061364a60008301846133a2565b92915050565b600060808201905061366560008301876133a2565b61367260208301866133a2565b61367f60408301856135e7565b818103606083015261369181846133e6565b905095945050505050565b60006020820190506136b160008301846133c8565b92915050565b60006020820190506136cc60008301846133d7565b92915050565b600060208201905081810360008301526136ec818461341f565b905092915050565b6000602082019050818103600083015261370d81613489565b9050919050565b6000602082019050818103600083015261372d816134ac565b9050919050565b6000602082019050818103600083015261374d816134cf565b9050919050565b6000602082019050818103600083015261376d816134f2565b9050919050565b6000602082019050818103600083015261378d81613515565b9050919050565b600060208201905081810360008301526137ad81613538565b9050919050565b600060208201905081810360008301526137cd8161355b565b9050919050565b600060208201905081810360008301526137ed8161357e565b9050919050565b6000602082019050818103600083015261380d816135a1565b9050919050565b6000602082019050818103600083015261382d816135c4565b9050919050565b600060208201905061384960008301846135e7565b92915050565b600061385961386a565b90506138658282613b1b565b919050565b6000604051905090565b600067ffffffffffffffff82111561388f5761388e613ca6565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156138bb576138ba613ca6565b5b6138c482613cf3565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061391f82613a9d565b915061392a83613a9d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561395f5761395e613bea565b5b828201905092915050565b600061397582613a9d565b915061398083613a9d565b9250826139905761398f613c19565b5b828204905092915050565b60006139a682613a9d565b91506139b183613a9d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139ea576139e9613bea565b5b828202905092915050565b6000613a0082613a9d565b9150613a0b83613a9d565b925082821015613a1e57613a1d613bea565b5b828203905092915050565b6000613a3482613a7d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613ad4578082015181840152602081019050613ab9565b83811115613ae3576000848401525b50505050565b60006002820490506001821680613b0157607f821691505b60208210811415613b1557613b14613c48565b5b50919050565b613b2482613cf3565b810181811067ffffffffffffffff82111715613b4357613b42613ca6565b5b80604052505050565b6000613b5782613a9d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b8a57613b89613bea565b5b600182019050919050565b6000613ba082613ba7565b9050919050565b6000613bb282613d04565b9050919050565b6000613bc482613a9d565b9150613bcf83613a9d565b925082613bdf57613bde613c19565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5452414e53414354494f4e3a20717479206f66206d696e7473206e6f7420616c60008201527f6f77656400000000000000000000000000000000000000000000000000000000602082015250565b7f5041594d454e543a20696e76616c69642076616c756500000000000000000000600082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f4578636565646564206d617820617661696c61626c6520746f2070757263686160008201527f73652c2050726553616c65204765747320312046726565204f6e6c792e000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f596f75722041646472657373206973206e6f74206f6e2074686520576869746560008201527f6c6973742e000000000000000000000000000000000000000000000000000000602082015250565b7f535550504c593a2056616c7565206578636565647320746f74616c537570706c60008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565646564206d617820617661696c61626c6520746f2070757263686160008201527f7365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74206973206e6f74204f70656e205965742e0000000000000000000000600082015250565b613f9881613a29565b8114613fa357600080fd5b50565b613faf81613a3b565b8114613fba57600080fd5b50565b613fc681613a47565b8114613fd157600080fd5b50565b613fdd81613a51565b8114613fe857600080fd5b50565b613ff481613a9d565b8114613fff57600080fd5b5056fea26469706673582212204b5ea5f34a5b4e17755a7cfd874d264af98bd5e633ee348b4237709be593048164736f6c63430008070033