60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f4c6f6e672050616e6461000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4c5041000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200009692919062000c50565b508060019080519060200190620000af92919062000c50565b505050620000d2620000c66200011160201b60201c565b6200011960201b60201c565b6000600190505b606481116200010a57620000f43382620001df60201b60201c565b8080620001019062001171565b915050620000d9565b5062001248565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002018282604051806020016040528060008152506200020560201b60201c565b5050565b6200021783836200027360201b60201c565b6200022c60008484846200045960201b60201c565b6200026e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002659062000f4e565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002dd9062000fb4565b60405180910390fd5b620002f7816200061360201b60201c565b156200033a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003319062000f70565b60405180910390fd5b6200034e600083836200067f60201b60201c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003a0919062001003565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000620004878473ffffffffffffffffffffffffffffffffffffffff166200069c60201b620010911760201c565b1562000606578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620004b96200011160201b60201c565b8786866040518563ffffffff1660e01b8152600401620004dd949392919062000efa565b602060405180830381600087803b158015620004f857600080fd5b505af19250505080156200052c57506040513d601f19601f8201168201806040525081019062000529919062000d17565b60015b620005b5573d80600081146200055f576040519150601f19603f3d011682016040523d82523d6000602084013e62000564565b606091505b50600081511415620005ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005a49062000f4e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506200060b565b600190505b949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b62000697838383620006af60201b620010a41760201c565b505050565b600080823b905060008111915050919050565b620006c7838383620007f660201b620011b81760201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000714576200070e81620007fb60201b60201c565b6200075c565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146200075b576200075a83826200084460201b60201c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007a957620007a381620009c160201b60201c565b620007f1565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620007f057620007ef828262000b0960201b60201c565b5b5b505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016200085e8462000b9560201b62000a3b1760201c565b6200086a919062001060565b905060006007600084815260200190815260200160002054905081811462000950576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050620009d7919062001060565b905060006009600084815260200190815260200160002054905060006008838154811062000a2e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050806008838154811062000a77577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548062000aed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600062000b218362000b9560201b62000a3b1760201c565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000c09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c009062000f92565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b82805462000c5e906200113b565b90600052602060002090601f01602090048101928262000c82576000855562000cce565b82601f1062000c9d57805160ff191683800117855562000cce565b8280016001018555821562000cce579182015b8281111562000ccd57825182559160200191906001019062000cb0565b5b50905062000cdd919062000ce1565b5090565b5b8082111562000cfc57600081600090555060010162000ce2565b5090565b60008151905062000d11816200122e565b92915050565b60006020828403121562000d2a57600080fd5b600062000d3a8482850162000d00565b91505092915050565b62000d4e816200109b565b82525050565b600062000d618262000fd6565b62000d6d818562000fe1565b935062000d7f81856020860162001105565b62000d8a816200121d565b840191505092915050565b600062000da460328362000ff2565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b600062000e0c601c8362000ff2565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b600062000e4e602a8362000ff2565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b600062000eb660208362000ff2565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b62000ef481620010fb565b82525050565b600060808201905062000f11600083018762000d43565b62000f20602083018662000d43565b62000f2f604083018562000ee9565b818103606083015262000f43818462000d54565b905095945050505050565b6000602082019050818103600083015262000f698162000d95565b9050919050565b6000602082019050818103600083015262000f8b8162000dfd565b9050919050565b6000602082019050818103600083015262000fad8162000e3f565b9050919050565b6000602082019050818103600083015262000fcf8162000ea7565b9050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200101082620010fb565b91506200101d83620010fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010555762001054620011bf565b5b828201905092915050565b60006200106d82620010fb565b91506200107a83620010fb565b92508282101562001090576200108f620011bf565b5b828203905092915050565b6000620010a882620010db565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200112557808201518184015260208101905062001108565b8381111562001135576000848401525b50505050565b600060028204905060018216806200115457607f821691505b602082108114156200116b576200116a620011ee565b5b50919050565b60006200117e82620010fb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620011b457620011b3620011bf565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6200123981620010af565b81146200124557600080fd5b50565b6135c780620012586000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806355f804b3116100b857806395d89b411161007c57806395d89b411461034c578063a22cb4651461036a578063b88d4fde14610386578063c87b56dd146103a2578063e985e9c5146103d2578063f2fde38b1461040257610137565b806355f804b3146102965780636352211e146102b257806370a08231146102e2578063819b25ba146103125780638da5cb5b1461032e57610137565b806323b872dd116100ff57806323b872dd146101f45780632f745c59146102105780633ccfd60b1461024057806342842e0e1461024a5780634f6ccce71461026657610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806318160ddd146101d6575b600080fd5b61015660048036038101906101519190612634565b61041e565b6040516101639190612edf565b60405180910390f35b610174610430565b6040516101819190612efa565b60405180910390f35b6101a4600480360381019061019f91906126c7565b6104c2565b6040516101b19190612e78565b60405180910390f35b6101d460048036038101906101cf91906125f8565b610547565b005b6101de61065f565b6040516101eb919061315c565b60405180910390f35b61020e600480360381019061020991906124f2565b61066c565b005b61022a600480360381019061022591906125f8565b6106cc565b604051610237919061315c565b60405180910390f35b610248610771565b005b610264600480360381019061025f91906124f2565b61083c565b005b610280600480360381019061027b91906126c7565b61085c565b60405161028d919061315c565b60405180910390f35b6102b060048036038101906102ab9190612686565b6108f3565b005b6102cc60048036038101906102c791906126c7565b610989565b6040516102d99190612e78565b60405180910390f35b6102fc60048036038101906102f7919061248d565b610a3b565b604051610309919061315c565b60405180910390f35b61032c600480360381019061032791906126c7565b610af3565b005b610336610bbf565b6040516103439190612e78565b60405180910390f35b610354610be9565b6040516103619190612efa565b60405180910390f35b610384600480360381019061037f91906125bc565b610c7b565b005b6103a0600480360381019061039b9190612541565b610dfc565b005b6103bc60048036038101906103b791906126c7565b610e5e565b6040516103c99190612efa565b60405180910390f35b6103ec60048036038101906103e791906124b6565b610f05565b6040516103f99190612edf565b60405180910390f35b61041c6004803603810190610417919061248d565b610f99565b005b6000610429826111bd565b9050919050565b60606000805461043f906133bc565b80601f016020809104026020016040519081016040528092919081815260200182805461046b906133bc565b80156104b85780601f1061048d576101008083540402835291602001916104b8565b820191906000526020600020905b81548152906001019060200180831161049b57829003601f168201915b5050505050905090565b60006104cd82611237565b61050c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105039061307c565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061055282610989565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ba906130fc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105e26112a3565b73ffffffffffffffffffffffffffffffffffffffff16148061061157506106108161060b6112a3565b610f05565b5b610650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064790612ffc565b60405180910390fd5b61065a83836112ab565b505050565b6000600880549050905090565b61067d6106776112a3565b82611364565b6106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b39061311c565b60405180910390fd5b6106c7838383611442565b505050565b60006106d783610a3b565b8210610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f90612f1c565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6107796112a3565b73ffffffffffffffffffffffffffffffffffffffff16610797610bbf565b73ffffffffffffffffffffffffffffffffffffffff16146107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e49061309c565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610838573d6000803e3d6000fd5b5050565b61085783838360405180602001604052806000815250610dfc565b505050565b600061086661065f565b82106108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e9061313c565b60405180910390fd5b600882815481106108e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6108fb6112a3565b73ffffffffffffffffffffffffffffffffffffffff16610919610bbf565b73ffffffffffffffffffffffffffffffffffffffff161461096f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109669061309c565b60405180910390fd5b80600b90805190602001906109859291906122b1565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a299061303c565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa39061301c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610afb6112a3565b73ffffffffffffffffffffffffffffffffffffffff16610b19610bbf565b73ffffffffffffffffffffffffffffffffffffffff1614610b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b669061309c565b60405180910390fd5b6000610b7961065f565b905060005b82811015610bba57610ba73360018385610b98919061324b565b610ba2919061324b565b61169e565b8080610bb2906133ee565b915050610b7e565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610bf8906133bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610c24906133bc565b8015610c715780601f10610c4657610100808354040283529160200191610c71565b820191906000526020600020905b815481529060010190602001808311610c5457829003601f168201915b5050505050905090565b610c836112a3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce890612fbc565b60405180910390fd5b8060056000610cfe6112a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610dab6112a3565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610df09190612edf565b60405180910390a35050565b610e0d610e076112a3565b83611364565b610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e439061311c565b60405180910390fd5b610e58848484846116bc565b50505050565b6060610e6982611237565b610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f906130dc565b60405180910390fd5b6000610eb2611718565b90506000815111610ed25760405180602001604052806000815250610efd565b80610edc846117aa565b604051602001610eed929190612e54565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610fa16112a3565b73ffffffffffffffffffffffffffffffffffffffff16610fbf610bbf565b73ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c9061309c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c90612f5c565b60405180910390fd5b61108e81611957565b50565b600080823b905060008111915050919050565b6110af8383836111b8565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110f2576110ed81611a1d565b611131565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111305761112f8382611a66565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111745761116f81611bd3565b6111b3565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146111b2576111b18282611d16565b5b5b505050565b505050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611230575061122f82611d95565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661131e83610989565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061136f82611237565b6113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a590612fdc565b60405180910390fd5b60006113b983610989565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061142857508373ffffffffffffffffffffffffffffffffffffffff16611410846104c2565b73ffffffffffffffffffffffffffffffffffffffff16145b8061143957506114388185610f05565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661146282610989565b73ffffffffffffffffffffffffffffffffffffffff16146114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af906130bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f90612f9c565b60405180910390fd5b611533838383611e77565b61153e6000826112ab565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461158e91906132d2565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115e5919061324b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6116b8828260405180602001604052806000815250611e87565b5050565b6116c7848484611442565b6116d384848484611ee2565b611712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170990612f3c565b60405180910390fd5b50505050565b6060600b8054611727906133bc565b80601f0160208091040260200160405190810160405280929190818152602001828054611753906133bc565b80156117a05780601f10611775576101008083540402835291602001916117a0565b820191906000526020600020905b81548152906001019060200180831161178357829003601f168201915b5050505050905090565b606060008214156117f2576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611952565b600082905060005b6000821461182457808061180d906133ee565b915050600a8261181d91906132a1565b91506117fa565b60008167ffffffffffffffff811115611866577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156118985781602001600182028036833780820191505090505b5090505b6000851461194b576001826118b191906132d2565b9150600a856118c09190613437565b60306118cc919061324b565b60f81b818381518110611908577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561194491906132a1565b945061189c565b8093505050505b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001611a7384610a3b565b611a7d91906132d2565b9050600060076000848152602001908152602001600020549050818114611b62576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050611be791906132d2565b9050600060096000848152602001908152602001600020549050600060088381548110611c3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060088381548110611c85577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480611cfa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000611d2183610a3b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e6057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e705750611e6f82612079565b5b9050919050565b611e828383836110a4565b505050565b611e9183836120e3565b611e9e6000848484611ee2565b611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed490612f3c565b60405180910390fd5b505050565b6000611f038473ffffffffffffffffffffffffffffffffffffffff16611091565b1561206c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f2c6112a3565b8786866040518563ffffffff1660e01b8152600401611f4e9493929190612e93565b602060405180830381600087803b158015611f6857600080fd5b505af1925050508015611f9957506040513d601f19601f82011682018060405250810190611f96919061265d565b60015b61201c573d8060008114611fc9576040519150601f19603f3d011682016040523d82523d6000602084013e611fce565b606091505b50600081511415612014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200b90612f3c565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612071565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214a9061305c565b60405180910390fd5b61215c81611237565b1561219c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219390612f7c565b60405180910390fd5b6121a860008383611e77565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121f8919061324b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546122bd906133bc565b90600052602060002090601f0160209004810192826122df5760008555612326565b82601f106122f857805160ff1916838001178555612326565b82800160010185558215612326579182015b8281111561232557825182559160200191906001019061230a565b5b5090506123339190612337565b5090565b5b80821115612350576000816000905550600101612338565b5090565b6000612367612362846131a8565b613177565b90508281526020810184848401111561237f57600080fd5b61238a84828561337a565b509392505050565b60006123a56123a0846131d8565b613177565b9050828152602081018484840111156123bd57600080fd5b6123c884828561337a565b509392505050565b6000813590506123df81613535565b92915050565b6000813590506123f48161354c565b92915050565b60008135905061240981613563565b92915050565b60008151905061241e81613563565b92915050565b600082601f83011261243557600080fd5b8135612445848260208601612354565b91505092915050565b600082601f83011261245f57600080fd5b813561246f848260208601612392565b91505092915050565b6000813590506124878161357a565b92915050565b60006020828403121561249f57600080fd5b60006124ad848285016123d0565b91505092915050565b600080604083850312156124c957600080fd5b60006124d7858286016123d0565b92505060206124e8858286016123d0565b9150509250929050565b60008060006060848603121561250757600080fd5b6000612515868287016123d0565b9350506020612526868287016123d0565b925050604061253786828701612478565b9150509250925092565b6000806000806080858703121561255757600080fd5b6000612565878288016123d0565b9450506020612576878288016123d0565b935050604061258787828801612478565b925050606085013567ffffffffffffffff8111156125a457600080fd5b6125b087828801612424565b91505092959194509250565b600080604083850312156125cf57600080fd5b60006125dd858286016123d0565b92505060206125ee858286016123e5565b9150509250929050565b6000806040838503121561260b57600080fd5b6000612619858286016123d0565b925050602061262a85828601612478565b9150509250929050565b60006020828403121561264657600080fd5b6000612654848285016123fa565b91505092915050565b60006020828403121561266f57600080fd5b600061267d8482850161240f565b91505092915050565b60006020828403121561269857600080fd5b600082013567ffffffffffffffff8111156126b257600080fd5b6126be8482850161244e565b91505092915050565b6000602082840312156126d957600080fd5b60006126e784828501612478565b91505092915050565b6126f981613306565b82525050565b61270881613318565b82525050565b600061271982613208565b612723818561321e565b9350612733818560208601613389565b61273c81613524565b840191505092915050565b600061275282613213565b61275c818561322f565b935061276c818560208601613389565b61277581613524565b840191505092915050565b600061278b82613213565b6127958185613240565b93506127a5818560208601613389565b80840191505092915050565b60006127be602b8361322f565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b600061282460328361322f565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b600061288a60268361322f565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006128f0601c8361322f565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b600061293060248361322f565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061299660198361322f565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b60006129d6602c8361322f565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000612a3c60388361322f565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000612aa2602a8361322f565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b0860298361322f565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b6e60208361322f565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b6000612bae602c8361322f565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000612c1460208361322f565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612c5460298361322f565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000612cba602f8361322f565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b6000612d2060218361322f565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d8660318361322f565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000612dec602c8361322f565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b612e4e81613370565b82525050565b6000612e608285612780565b9150612e6c8284612780565b91508190509392505050565b6000602082019050612e8d60008301846126f0565b92915050565b6000608082019050612ea860008301876126f0565b612eb560208301866126f0565b612ec26040830185612e45565b8181036060830152612ed4818461270e565b905095945050505050565b6000602082019050612ef460008301846126ff565b92915050565b60006020820190508181036000830152612f148184612747565b905092915050565b60006020820190508181036000830152612f35816127b1565b9050919050565b60006020820190508181036000830152612f5581612817565b9050919050565b60006020820190508181036000830152612f758161287d565b9050919050565b60006020820190508181036000830152612f95816128e3565b9050919050565b60006020820190508181036000830152612fb581612923565b9050919050565b60006020820190508181036000830152612fd581612989565b9050919050565b60006020820190508181036000830152612ff5816129c9565b9050919050565b6000602082019050818103600083015261301581612a2f565b9050919050565b6000602082019050818103600083015261303581612a95565b9050919050565b6000602082019050818103600083015261305581612afb565b9050919050565b6000602082019050818103600083015261307581612b61565b9050919050565b6000602082019050818103600083015261309581612ba1565b9050919050565b600060208201905081810360008301526130b581612c07565b9050919050565b600060208201905081810360008301526130d581612c47565b9050919050565b600060208201905081810360008301526130f581612cad565b9050919050565b6000602082019050818103600083015261311581612d13565b9050919050565b6000602082019050818103600083015261313581612d79565b9050919050565b6000602082019050818103600083015261315581612ddf565b9050919050565b60006020820190506131716000830184612e45565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561319e5761319d6134f5565b5b8060405250919050565b600067ffffffffffffffff8211156131c3576131c26134f5565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156131f3576131f26134f5565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061325682613370565b915061326183613370565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561329657613295613468565b5b828201905092915050565b60006132ac82613370565b91506132b783613370565b9250826132c7576132c6613497565b5b828204905092915050565b60006132dd82613370565b91506132e883613370565b9250828210156132fb576132fa613468565b5b828203905092915050565b600061331182613350565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156133a757808201518184015260208101905061338c565b838111156133b6576000848401525b50505050565b600060028204905060018216806133d457607f821691505b602082108114156133e8576133e76134c6565b5b50919050565b60006133f982613370565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561342c5761342b613468565b5b600182019050919050565b600061344282613370565b915061344d83613370565b92508261345d5761345c613497565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61353e81613306565b811461354957600080fd5b50565b61355581613318565b811461356057600080fd5b50565b61356c81613324565b811461357757600080fd5b50565b61358381613370565b811461358e57600080fd5b5056fea26469706673582212202d953a6c927a2a7db4a016000e337921989372d93625e4a17f95426b20461fa864736f6c63430008000033