60806040526603328b944c40006007556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c908162000055919062000a06565b503480156200006357600080fd5b506040518060400160405280600881526020017f42617365646564650000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f64656465000000000000000000000000000000000000000000000000000000008152508160009081620000e1919062000a06565b508060019081620000f3919062000a06565b505050620001166200010a6200018660201b60201c565b6200018e60201b60201c565b6040518060600160405280603681526020016200486a60369139600b908162000140919062000a06565b506000600190505b6002811162000177576200016333826200025460201b60201c565b806200016f9062000b1c565b905062000148565b50600260098190555062000ed8565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002768282604051806020016040528060008152506200027a60201b60201c565b5050565b6200028c8383620002e860201b60201c565b620002a160008484846200052e60201b60201c565b620002e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002da9062000bf0565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200035a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003519062000c62565b60405180910390fd5b6200036b81620006d760201b60201c565b15620003ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003a59062000cd4565b60405180910390fd5b620003c46000838360016200072060201b60201c565b620003d581620006d760201b60201c565b1562000418576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200040f9062000cd4565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200052a6000838360016200072660201b60201c565b5050565b60006200055c8473ffffffffffffffffffffffffffffffffffffffff166200072c60201b6200141d1760201c565b15620006ca578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026200058e6200018660201b60201c565b8786866040518563ffffffff1660e01b8152600401620005b2949392919062000df0565b6020604051808303816000875af1925050508015620005f157506040513d601f19601f82011682018060405250810190620005ee919062000ea6565b60015b62000679573d806000811462000624576040519150601f19603f3d011682016040523d82523d6000602084013e62000629565b606091505b50600081510362000671576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006689062000bf0565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050620006cf565b600190505b949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff1662000701836200074f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200080e57607f821691505b602082108103620008245762000823620007c6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200088e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200084f565b6200089a86836200084f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008e7620008e1620008db84620008b2565b620008bc565b620008b2565b9050919050565b6000819050919050565b6200090383620008c6565b6200091b6200091282620008ee565b8484546200085c565b825550505050565b600090565b6200093262000923565b6200093f818484620008f8565b505050565b5b8181101562000967576200095b60008262000928565b60018101905062000945565b5050565b601f821115620009b65762000980816200082a565b6200098b846200083f565b810160208510156200099b578190505b620009b3620009aa856200083f565b83018262000944565b50505b505050565b600082821c905092915050565b6000620009db60001984600802620009bb565b1980831691505092915050565b6000620009f68383620009c8565b9150826002028217905092915050565b62000a11826200078c565b67ffffffffffffffff81111562000a2d5762000a2c62000797565b5b62000a398254620007f5565b62000a468282856200096b565b600060209050601f83116001811462000a7e576000841562000a69578287015190505b62000a758582620009e8565b86555062000ae5565b601f19841662000a8e866200082a565b60005b8281101562000ab85784890151825560018201915060208501945060208101905062000a91565b8683101562000ad8578489015162000ad4601f891682620009c8565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b2982620008b2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000b5e5762000b5d62000aed565b5b600182019050919050565b600082825260208201905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600062000bd860328362000b69565b915062000be58262000b7a565b604082019050919050565b6000602082019050818103600083015262000c0b8162000bc9565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600062000c4a60208362000b69565b915062000c578262000c12565b602082019050919050565b6000602082019050818103600083015262000c7d8162000c3b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600062000cbc601c8362000b69565b915062000cc98262000c84565b602082019050919050565b6000602082019050818103600083015262000cef8162000cad565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d238262000cf6565b9050919050565b62000d358162000d16565b82525050565b62000d4681620008b2565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000d8857808201518184015260208101905062000d6b565b8381111562000d98576000848401525b50505050565b6000601f19601f8301169050919050565b600062000dbc8262000d4c565b62000dc8818562000d57565b935062000dda81856020860162000d68565b62000de58162000d9e565b840191505092915050565b600060808201905062000e07600083018762000d2a565b62000e16602083018662000d2a565b62000e25604083018562000d3b565b818103606083015262000e39818462000daf565b905095945050505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62000e808162000e49565b811462000e8c57600080fd5b50565b60008151905062000ea08162000e75565b92915050565b60006020828403121562000ebf5762000ebe62000e44565b5b600062000ecf8482850162000e8f565b91505092915050565b6139828062000ee86000396000f3fe6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063b88d4fde11610095578063f0b8da9111610064578063f0b8da9114610615578063f2fde38b14610640578063fb92488b14610669578063ffa04ace14610692576101cd565b8063b88d4fde14610547578063c668286214610570578063c87b56dd1461059b578063e985e9c5146105d8576101cd565b8063a035b1fe116100d1578063a035b1fe146104ae578063a0712d68146104d9578063a0bcfc7f146104f5578063a22cb4651461051e576101cd565b80638da5cb5b1461042d57806395d89b41146104585780639abc832014610483576101cd565b8063264517ec1161016f5780636352211e1161013e5780636352211e1461038557806368d9f987146103c257806370a08231146103d9578063715018a614610416576101cd565b8063264517ec1461031d57806332cb6b0c146103275780633ccfd60b1461035257806342842e0e1461035c576101cd565b8063081812fc116101ab578063081812fc14610263578063095ea7b3146102a057806318160ddd146102c957806323b872dd146102f4576101cd565b806301ffc9a7146101d257806306fdde031461020f5780630718069f1461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f49190612416565b6106bd565b604051610206919061245e565b60405180910390f35b34801561021b57600080fd5b5061022461079f565b6040516102319190612512565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c919061256a565b610831565b005b34801561026f57600080fd5b5061028a6004803603810190610285919061256a565b610938565b60405161029791906125d8565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c2919061261f565b61097e565b005b3480156102d557600080fd5b506102de610a95565b6040516102eb919061266e565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612689565b610a9b565b005b610325610afb565b005b34801561033357600080fd5b5061033c610cce565b604051610349919061266e565b60405180910390f35b61035a610cd4565b005b34801561036857600080fd5b50610383600480360381019061037e9190612689565b610d23565b005b34801561039157600080fd5b506103ac60048036038101906103a7919061256a565b610d43565b6040516103b991906125d8565b60405180910390f35b3480156103ce57600080fd5b506103d7610dc9565b005b3480156103e557600080fd5b5061040060048036038101906103fb91906126dc565b610dfd565b60405161040d919061266e565b60405180910390f35b34801561042257600080fd5b5061042b610eb4565b005b34801561043957600080fd5b50610442610ec8565b60405161044f91906125d8565b60405180910390f35b34801561046457600080fd5b5061046d610ef2565b60405161047a9190612512565b60405180910390f35b34801561048f57600080fd5b50610498610f84565b6040516104a59190612512565b60405180910390f35b3480156104ba57600080fd5b506104c3611012565b6040516104d0919061266e565b60405180910390f35b6104f360048036038101906104ee919061256a565b611018565b005b34801561050157600080fd5b5061051c6004803603810190610517919061283e565b611111565b005b34801561052a57600080fd5b50610545600480360381019061054091906128b3565b61112c565b005b34801561055357600080fd5b5061056e60048036038101906105699190612994565b611142565b005b34801561057c57600080fd5b506105856111a4565b6040516105929190612512565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd919061256a565b611232565b6040516105cf9190612512565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612a17565b6112dc565b60405161060c919061245e565b60405180910390f35b34801561062157600080fd5b5061062a611370565b604051610637919061245e565b60405180910390f35b34801561064c57600080fd5b50610667600480360381019061066291906126dc565b611383565b005b34801561067557600080fd5b50610690600480360381019061068b919061256a565b611406565b005b34801561069e57600080fd5b506106a7611418565b6040516106b4919061266e565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061078857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610798575061079782611440565b5b9050919050565b6060600080546107ae90612a86565b80601f01602080910402602001604051908101604052809291908181526020018280546107da90612a86565b80156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b5050505050905090565b6108396114aa565b60006009549050611a8f828261084f9190612ae6565b1115610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088790612b88565b60405180910390fd5b6000600190505b8281116108c4576108b33382846108ae9190612ae6565b611528565b806108bd90612ba8565b9050610897565b5081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109149190612ae6565b92505081905550816009600082825461092d9190612ae6565b925050819055505050565b600061094382611546565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061098982610d43565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f090612c62565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a18611591565b73ffffffffffffffffffffffffffffffffffffffff161480610a475750610a4681610a41611591565b6112dc565b5b610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90612cf4565b60405180910390fd5b610a908383611599565b505050565b60095481565b610aac610aa6611591565b82611652565b610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae290612d86565b60405180910390fd5b610af68383836116e7565b505050565b600860009054906101000a900460ff16610b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4190612df2565b60405180910390fd5b6001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc390612e5e565b60405180910390fd5b60006009549050611a8f600182610be39190612ae6565b1115610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90612b88565b60405180910390fd5b6000600190505b60018111610c5957610c48338284610c439190612ae6565b611528565b80610c5290612ba8565b9050610c2b565b506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610caa9190612ae6565b92505081905550600160096000828254610cc49190612ae6565b9250508190555050565b611a8f81565b610cdc6114aa565b610ce4610ec8565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050610d2157600080fd5b565b610d3e83838360405180602001604052806000815250611142565b505050565b600080610d4f836119e0565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db790612eca565b60405180910390fd5b80915050919050565b610dd16114aa565b600860009054906101000a900460ff1615600860006101000a81548160ff021916908315150217905550565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6490612f5c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ebc6114aa565b610ec66000611a1d565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610f0190612a86565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2d90612a86565b8015610f7a5780601f10610f4f57610100808354040283529160200191610f7a565b820191906000526020600020905b815481529060010190602001808311610f5d57829003601f168201915b5050505050905090565b600b8054610f9190612a86565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbd90612a86565b801561100a5780601f10610fdf5761010080835404028352916020019161100a565b820191906000526020600020905b815481529060010190602001808311610fed57829003601f168201915b505050505081565b60075481565b60006009549050611a8f828261102e9190612ae6565b111561106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106690612b88565b60405180910390fd5b346007548361107e9190612f7c565b11156110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b690613022565b60405180910390fd5b6000600190505b8281116110f3576110e23382846110dd9190612ae6565b611528565b806110ec90612ba8565b90506110c6565b5081600960008282546111069190612ae6565b925050819055505050565b6111196114aa565b80600b908161112891906131ee565b5050565b61113e611137611591565b8383611ae3565b5050565b61115361114d611591565b83611652565b611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990612d86565b60405180910390fd5b61119e84848484611c4f565b50505050565b600c80546111b190612a86565b80601f01602080910402602001604051908101604052809291908181526020018280546111dd90612a86565b801561122a5780601f106111ff5761010080835404028352916020019161122a565b820191906000526020600020905b81548152906001019060200180831161120d57829003601f168201915b505050505081565b606061123d82611cab565b61127c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127390613332565b60405180910390fd5b6000611286611cec565b905060008151116112a657604051806020016040528060008152506112d4565b806112b084611d7e565b600c6040516020016112c493929190613411565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600860009054906101000a900460ff1681565b61138b6114aa565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f1906134b4565b60405180910390fd5b61140381611a1d565b50565b61140e6114aa565b8060078190555050565b600181565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6114b2611591565b73ffffffffffffffffffffffffffffffffffffffff166114d0610ec8565b73ffffffffffffffffffffffffffffffffffffffff1614611526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151d90613520565b60405180910390fd5b565b611542828260405180602001604052806000815250611e4c565b5050565b61154f81611cab565b61158e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158590612eca565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661160c83610d43565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061165e83610d43565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806116a0575061169f81856112dc565b5b806116de57508373ffffffffffffffffffffffffffffffffffffffff166116c684610938565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661170782610d43565b73ffffffffffffffffffffffffffffffffffffffff161461175d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611754906135b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c390613644565b60405180910390fd5b6117d98383836001611ea7565b8273ffffffffffffffffffffffffffffffffffffffff166117f982610d43565b73ffffffffffffffffffffffffffffffffffffffff161461184f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611846906135b2565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46119db8383836001611ead565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b48906136b0565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c42919061245e565b60405180910390a3505050565b611c5a8484846116e7565b611c6684848484611eb3565b611ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9c90613742565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff16611ccd836119e0565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6060600b8054611cfb90612a86565b80601f0160208091040260200160405190810160405280929190818152602001828054611d2790612a86565b8015611d745780601f10611d4957610100808354040283529160200191611d74565b820191906000526020600020905b815481529060010190602001808311611d5757829003601f168201915b5050505050905090565b606060006001611d8d8461203a565b01905060008167ffffffffffffffff811115611dac57611dab612713565b5b6040519080825280601f01601f191660200182016040528015611dde5781602001600182028036833780820191505090505b509050600082602001820190505b600115611e41578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611e3557611e34613762565b5b04945060008503611dec575b819350505050919050565b611e56838361218d565b611e636000848484611eb3565b611ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9990613742565b60405180910390fd5b505050565b50505050565b50505050565b6000611ed48473ffffffffffffffffffffffffffffffffffffffff1661141d565b1561202d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611efd611591565b8786866040518563ffffffff1660e01b8152600401611f1f94939291906137e6565b6020604051808303816000875af1925050508015611f5b57506040513d601f19601f82011682018060405250810190611f589190613847565b60015b611fdd573d8060008114611f8b576040519150601f19603f3d011682016040523d82523d6000602084013e611f90565b606091505b506000815103611fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcc90613742565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612032565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612098577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161208e5761208d613762565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106120d5576d04ee2d6d415b85acef810000000083816120cb576120ca613762565b5b0492506020810190505b662386f26fc10000831061210457662386f26fc1000083816120fa576120f9613762565b5b0492506010810190505b6305f5e100831061212d576305f5e100838161212357612122613762565b5b0492506008810190505b612710831061215257612710838161214857612147613762565b5b0492506004810190505b60648310612175576064838161216b5761216a613762565b5b0492506002810190505b600a8310612184576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f3906138c0565b60405180910390fd5b61220581611cab565b15612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c9061392c565b60405180910390fd5b612253600083836001611ea7565b61225c81611cab565b1561229c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122939061392c565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123a6600083836001611ead565b5050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123f3816123be565b81146123fe57600080fd5b50565b600081359050612410816123ea565b92915050565b60006020828403121561242c5761242b6123b4565b5b600061243a84828501612401565b91505092915050565b60008115159050919050565b61245881612443565b82525050565b6000602082019050612473600083018461244f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124b3578082015181840152602081019050612498565b838111156124c2576000848401525b50505050565b6000601f19601f8301169050919050565b60006124e482612479565b6124ee8185612484565b93506124fe818560208601612495565b612507816124c8565b840191505092915050565b6000602082019050818103600083015261252c81846124d9565b905092915050565b6000819050919050565b61254781612534565b811461255257600080fd5b50565b6000813590506125648161253e565b92915050565b6000602082840312156125805761257f6123b4565b5b600061258e84828501612555565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125c282612597565b9050919050565b6125d2816125b7565b82525050565b60006020820190506125ed60008301846125c9565b92915050565b6125fc816125b7565b811461260757600080fd5b50565b600081359050612619816125f3565b92915050565b60008060408385031215612636576126356123b4565b5b60006126448582860161260a565b925050602061265585828601612555565b9150509250929050565b61266881612534565b82525050565b6000602082019050612683600083018461265f565b92915050565b6000806000606084860312156126a2576126a16123b4565b5b60006126b08682870161260a565b93505060206126c18682870161260a565b92505060406126d286828701612555565b9150509250925092565b6000602082840312156126f2576126f16123b4565b5b60006127008482850161260a565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61274b826124c8565b810181811067ffffffffffffffff8211171561276a57612769612713565b5b80604052505050565b600061277d6123aa565b90506127898282612742565b919050565b600067ffffffffffffffff8211156127a9576127a8612713565b5b6127b2826124c8565b9050602081019050919050565b82818337600083830152505050565b60006127e16127dc8461278e565b612773565b9050828152602081018484840111156127fd576127fc61270e565b5b6128088482856127bf565b509392505050565b600082601f83011261282557612824612709565b5b81356128358482602086016127ce565b91505092915050565b600060208284031215612854576128536123b4565b5b600082013567ffffffffffffffff811115612872576128716123b9565b5b61287e84828501612810565b91505092915050565b61289081612443565b811461289b57600080fd5b50565b6000813590506128ad81612887565b92915050565b600080604083850312156128ca576128c96123b4565b5b60006128d88582860161260a565b92505060206128e98582860161289e565b9150509250929050565b600067ffffffffffffffff82111561290e5761290d612713565b5b612917826124c8565b9050602081019050919050565b6000612937612932846128f3565b612773565b9050828152602081018484840111156129535761295261270e565b5b61295e8482856127bf565b509392505050565b600082601f83011261297b5761297a612709565b5b813561298b848260208601612924565b91505092915050565b600080600080608085870312156129ae576129ad6123b4565b5b60006129bc8782880161260a565b94505060206129cd8782880161260a565b93505060406129de87828801612555565b925050606085013567ffffffffffffffff8111156129ff576129fe6123b9565b5b612a0b87828801612966565b91505092959194509250565b60008060408385031215612a2e57612a2d6123b4565b5b6000612a3c8582860161260a565b9250506020612a4d8582860161260a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a9e57607f821691505b602082108103612ab157612ab0612a57565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612af182612534565b9150612afc83612534565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b3157612b30612ab7565b5b828201905092915050565b7f537570706c79206c696d69742072656163686564000000000000000000000000600082015250565b6000612b72601483612484565b9150612b7d82612b3c565b602082019050919050565b60006020820190508181036000830152612ba181612b65565b9050919050565b6000612bb382612534565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612be557612be4612ab7565b5b600182019050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c4c602183612484565b9150612c5782612bf0565b604082019050919050565b60006020820190508181036000830152612c7b81612c3f565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612cde603d83612484565b9150612ce982612c82565b604082019050919050565b60006020820190508181036000830152612d0d81612cd1565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000612d70602d83612484565b9150612d7b82612d14565b604082019050919050565b60006020820190508181036000830152612d9f81612d63565b9050919050565b7f667265656d696e742073746f707065642e000000000000000000000000000000600082015250565b6000612ddc601183612484565b9150612de782612da6565b602082019050919050565b60006020820190508181036000830152612e0b81612dcf565b9050919050565b7f4f6e6c7920312066726565206c696d6974207065722077616c6c657400000000600082015250565b6000612e48601c83612484565b9150612e5382612e12565b602082019050919050565b60006020820190508181036000830152612e7781612e3b565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612eb4601883612484565b9150612ebf82612e7e565b602082019050919050565b60006020820190508181036000830152612ee381612ea7565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612f46602983612484565b9150612f5182612eea565b604082019050919050565b60006020820190508181036000830152612f7581612f39565b9050919050565b6000612f8782612534565b9150612f9283612534565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fcb57612fca612ab7565b5b828202905092915050565b7f6e6f7420456e6f75676820455448000000000000000000000000000000000000600082015250565b600061300c600e83612484565b915061301782612fd6565b602082019050919050565b6000602082019050818103600083015261303b81612fff565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026130a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613067565b6130ae8683613067565b95508019841693508086168417925050509392505050565b6000819050919050565b60006130eb6130e66130e184612534565b6130c6565b612534565b9050919050565b6000819050919050565b613105836130d0565b613119613111826130f2565b848454613074565b825550505050565b600090565b61312e613121565b6131398184846130fc565b505050565b5b8181101561315d57613152600082613126565b60018101905061313f565b5050565b601f8211156131a25761317381613042565b61317c84613057565b8101602085101561318b578190505b61319f61319785613057565b83018261313e565b50505b505050565b600082821c905092915050565b60006131c5600019846008026131a7565b1980831691505092915050565b60006131de83836131b4565b9150826002028217905092915050565b6131f782612479565b67ffffffffffffffff8111156132105761320f612713565b5b61321a8254612a86565b613225828285613161565b600060209050601f8311600181146132585760008415613246578287015190505b61325085826131d2565b8655506132b8565b601f19841661326686613042565b60005b8281101561328e57848901518255600182019150602085019450602081019050613269565b868310156132ab57848901516132a7601f8916826131b4565b8355505b6001600288020188555050505b505050505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e206578697374656e7420746f6b656e00000000000000000000000000000000602082015250565b600061331c603083612484565b9150613327826132c0565b604082019050919050565b6000602082019050818103600083015261334b8161330f565b9050919050565b600081905092915050565b600061336882612479565b6133728185613352565b9350613382818560208601612495565b80840191505092915050565b6000815461339b81612a86565b6133a58186613352565b945060018216600081146133c057600181146133d557613408565b60ff1983168652811515820286019350613408565b6133de85613042565b60005b83811015613400578154818901526001820191506020810190506133e1565b838801955050505b50505092915050565b600061341d828661335d565b9150613429828561335d565b9150613435828461338e565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061349e602683612484565b91506134a982613442565b604082019050919050565b600060208201905081810360008301526134cd81613491565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061350a602083612484565b9150613515826134d4565b602082019050919050565b60006020820190508181036000830152613539816134fd565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061359c602583612484565b91506135a782613540565b604082019050919050565b600060208201905081810360008301526135cb8161358f565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061362e602483612484565b9150613639826135d2565b604082019050919050565b6000602082019050818103600083015261365d81613621565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061369a601983612484565b91506136a582613664565b602082019050919050565b600060208201905081810360008301526136c98161368d565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061372c603283612484565b9150613737826136d0565b604082019050919050565b6000602082019050818103600083015261375b8161371f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b60006137b882613791565b6137c2818561379c565b93506137d2818560208601612495565b6137db816124c8565b840191505092915050565b60006080820190506137fb60008301876125c9565b61380860208301866125c9565b613815604083018561265f565b818103606083015261382781846137ad565b905095945050505050565b600081519050613841816123ea565b92915050565b60006020828403121561385d5761385c6123b4565b5b600061386b84828501613832565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006138aa602083612484565b91506138b582613874565b602082019050919050565b600060208201905081810360008301526138d98161389d565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613916601c83612484565b9150613921826138e0565b602082019050919050565b6000602082019050818103600083015261394581613909565b905091905056fea264697066735822122050f8cc9a06416b6197625035d648128e29d69b9a7d1b3d6d37f00a529cc4102d64736f6c634300080f0033697066733a2f2f516d6537665951726f787236445671394a31314a51506254354b7765325a59434b4e363346687a6d4a324d5753392f