{
  "contractName": "ModuleRegistry",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "registry",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "verified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "tickerRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint8"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "moduleList",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "reputation",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint8"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "availableTags",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polyToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polymathRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_tokenContract",
          "type": "address"
        }
      ],
      "name": "reclaimERC20",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "moduleRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "securityTokenRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "updateFromRegistry",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_polymathRegistry",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_moduleFactory",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_securityToken",
          "type": "address"
        }
      ],
      "name": "LogModuleUsed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_moduleFactory",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "LogModuleRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_moduleFactory",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_verified",
          "type": "bool"
        }
      ],
      "name": "LogModuleVerified",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestammp",
          "type": "uint256"
        }
      ],
      "name": "Pause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Unpause",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_moduleFactory",
          "type": "address"
        }
      ],
      "name": "useModule",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_moduleFactory",
          "type": "address"
        }
      ],
      "name": "registerModule",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_moduleFactory",
          "type": "address"
        },
        {
          "name": "_verified",
          "type": "bool"
        }
      ],
      "name": "verifyModule",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_moduleType",
          "type": "uint8"
        }
      ],
      "name": "getTagByModuleType",
      "outputs": [
        {
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_moduleType",
          "type": "uint8"
        },
        {
          "name": "_tag",
          "type": "bytes32[]"
        }
      ],
      "name": "addTagByModuleType",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_moduleType",
          "type": "uint8"
        },
        {
          "name": "_removedTags",
          "type": "bytes32[]"
        }
      ],
      "name": "removeTagByModuleType",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526000805460ff1916905534801561001a57600080fd5b506040516020806118be83398101604052516000805461010060a860020a031916336101000217905580600160a060020a038116151561005957600080fd5b60018054600160a060020a031916600160a060020a039290921691909117905550611835806100896000396000f3006080604052600436106101245763ffffffff60e060020a600035041663038defd781146101295780630db065f4146101605780631e79933f146101955780632a858126146101f45780632cdc054c146102255780633f4ba83a146102435780634b951cbe1461025857806356196dc91461027c5780635c975abb146102e75780635e14fb35146102fc5780636faa22a51461032c578063715018a61461034157806377282b70146103565780638456cb591461036b5780638905fd4f146103805780638da5cb5b146103a15780639b77d69f146103b6578063ad64ae4b14610413578063b95459e414610434578063ce4dbdff14610449578063dc6599071461045e578063eac5ab431461047f578063f2fde38b146104a5578063f433262f146104c6575b600080fd5b34801561013557600080fd5b5061014a600160a060020a03600435166104db565b6040805160ff9092168252519081900360200190f35b34801561016c57600080fd5b50610181600160a060020a03600435166104f0565b604080519115158252519081900360200190f35b3480156101a157600080fd5b506040805160206004602480358281013584810280870186019097528086526101f296843560ff16963696604495919490910192918291850190849080828437509497506105059650505050505050565b005b34801561020057600080fd5b506102096105f7565b60408051600160a060020a039092168252519081900360200190f35b34801561023157600080fd5b5061020960ff60043516602435610606565b34801561024f57600080fd5b506101f261063d565b34801561026457600080fd5b50610209600160a060020a0360043516602435610663565b34801561028857600080fd5b5061029760ff6004351661067e565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102d35781810151838201526020016102bb565b505050509050019250505060405180910390f35b3480156102f357600080fd5b506101816106e5565b34801561030857600080fd5b5061031a60ff600435166024356106ee565b60408051918252519081900360200190f35b34801561033857600080fd5b5061020961071e565b34801561034d57600080fd5b506101f261072d565b34801561036257600080fd5b506102096107a3565b34801561037757600080fd5b506101f26107b2565b34801561038c57600080fd5b506101f2600160a060020a03600435166107d6565b3480156103ad57600080fd5b5061020961094f565b3480156103c257600080fd5b506040805160206004602480358281013584810280870186019097528086526101f296843560ff16963696604495919490910192918291850190849080828437509497506109639650505050505050565b34801561041f57600080fd5b50610181600160a060020a03600435166109df565b34801561044057600080fd5b50610209610de8565b34801561045557600080fd5b50610209610df7565b34801561046a57600080fd5b506101f2600160a060020a0360043516610e06565b34801561048b57600080fd5b50610181600160a060020a03600435166024351515611164565b3480156104b157600080fd5b506101f2600160a060020a036004351661127e565b3480156104d257600080fd5b506101f26112a3565b60066020526000908152604090205460ff1681565b60096020526000908152604090205460ff1681565b6000805481906101009004600160a060020a0316331461052457600080fd5b600091505b60ff8085166000908152600a602052604090205490831610156105f1575060005b82518160ff1610156105e657828160ff1681518110151561056757fe5b9060200190602002015160001916600a60008660ff1660ff1681526020019081526020016000208360ff1681548110151561059e57fe5b60009182526020909120015414156105de5760ff8085166000908152600a602052604090208054909184169081106105d257fe5b60009182526020822001555b60010161054a565b600190910190610529565b50505050565b600454600160a060020a031681565b60086020528160005260406000208181548110151561062157fe5b600091825260209091200154600160a060020a03169150829050565b6000546101009004600160a060020a0316331461065957600080fd5b6106616115bd565b565b60076020528160005260406000208181548110151561062157fe5b60ff81166000908152600a60209081526040918290208054835181840281018401909452808452606093928301828280156106d957602002820191906000526020600020905b815481526001909101906020018083116106c4575b50505050509050919050565b60005460ff1681565b600a6020528160005260406000208181548110151561070957fe5b90600052602060002001600091509150505481565b600554600160a060020a031681565b6000546101009004600160a060020a0316331461074957600080fd5b60008054604051610100909104600160a060020a0316917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805474ffffffffffffffffffffffffffffffffffffffff0019169055565b600154600160a060020a031681565b6000546101009004600160a060020a031633146107ce57600080fd5b610661611658565b6000805481906101009004600160a060020a031633146107f557600080fd5b600160a060020a038316151561080a57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561086e57600080fd5b505af1158015610882573d6000803e3d6000fd5b505050506040513d602081101561089857600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152610100909204600160a060020a03908116600484015260248301859052905193945085169263a9059cbb92604480840193602093929083900390910190829087803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b505050506040513d602081101561093d57600080fd5b5051151561094a57600080fd5b505050565b6000546101009004600160a060020a031681565b600080546101009004600160a060020a0316331461098057600080fd5b5060005b81518160ff16101561094a5760ff8084166000908152600a602052604090208351909184919084169081106109b557fe5b60209081029091018101518254600181810185556000948552929093209092019190915501610984565b60008054819060ff1615610a3d576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831660009081526006602052604090205460ff1615610ad4576040805160e560020a62461bcd02815260206004820152602b60248201527f4d6f64756c6520666163746f72792073686f756c64206e6f742062652070726560448201527f2d72656769737465726564000000000000000000000000000000000000000000606482015290519081900360840190fd5b82905080600160a060020a03166315dae03e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610b1557600080fd5b505af1158015610b29573d6000803e3d6000fd5b505050506040513d6020811015610b3f57600080fd5b505160ff161515610bc0576040805160e560020a62461bcd02815260206004820152602260248201527f466163746f727920747970652073686f756c64206e6f7420657175616c20746f60448201527f2030000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b80600160a060020a03166315dae03e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610bfe57600080fd5b505af1158015610c12573d6000803e3d6000fd5b505050506040513d6020811015610c2857600080fd5b5051600160a060020a038481166000908152600660209081526040808320805460ff191660ff9096169590951790945583517f15dae03e000000000000000000000000000000000000000000000000000000008152935160089492938616926315dae03e92600480830193919282900301818787803b158015610caa57600080fd5b505af1158015610cbe573d6000803e3d6000fd5b505050506040513d6020811015610cd457600080fd5b505160ff168152602080820192909252604090810160009081208054600181018255908252838220018054600160a060020a031916600160a060020a038816908117909155825182815280850180855291835260079094529190209151610d3c92919061177d565b5080600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610d7b57600080fd5b505af1158015610d8f573d6000803e3d6000fd5b505050506040513d6020811015610da557600080fd5b5051604051600160a060020a03918216918516907fae85ba22803e75ecc9115045a3a9e17c151fe6486fdb52acf6c0da16bbd38c1e90600090a350600192915050565b600254600160a060020a031681565b600354600160a060020a031681565b600354604080517fd300a9680000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163d300a968916024808201926020929091908290030181600087803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b505050506040513d6020811015610e9657600080fd5b50511561116157600160a060020a03811660009081526006602052604090205460ff161515610f35576040805160e560020a62461bcd02815260206004820152602260248201527f4d6f64756c65466163746f727920747970652073686f756c64206e6f7420626560448201527f2030000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03811660009081526009602052604090205460ff1680611057575033600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f9557600080fd5b505af1158015610fa9573d6000803e3d6000fd5b505050506040513d6020811015610fbf57600080fd5b5051604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a0392831692841691638da5cb5b9160048083019260209291908290030181600087803b15801561102057600080fd5b505af1158015611034573d6000803e3d6000fd5b505050506040513d602081101561104a57600080fd5b5051600160a060020a0316145b15156110f9576040805160e560020a62461bcd02815260206004820152604160248201527f4d6f64756c6520666163746f7279206973206e6f74207665726966696564206160448201527f732077656c6c206173206e6f742063616c6c656420627920746865206f776e6560648201527f7200000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600160a060020a038116600081815260076020908152604080832080546001810182559084529183209091018054600160a060020a0319163390811790915590519092917f6a29bd0f4ad1fa11b5da542f2cbb7caccf3f8547d9126b6708f294154b19351a91a35b50565b600080546101009004600160a060020a0316331461118157600080fd5b600160a060020a03831660009081526006602052604090205460ff161515611219576040805160e560020a62461bcd02815260206004820152603260248201527f4d6f64756c6520666163746f72792073686f756c642068617665206265656e2060448201527f616c726561647920726567697374657265640000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038316600081815260096020908152604091829020805460ff1916861515908117909155825190815291517f3023e432a59b6690d2e5f03154a5c5274aa8f3029a88625f964aaafbe9931e4e9281900390910190a250600192915050565b6000546101009004600160a060020a0316331461129a57600080fd5b611161816116f5565b6000546101009004600160a060020a031633146112bf57600080fd5b6001546040805160e060020a63bf40fac1028152602060048201819052600e60248301527f4d6f64756c65526567697374727900000000000000000000000000000000000060448301529151600160a060020a039093169263bf40fac1926064808401939192918290030181600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b505050506040513d602081101561136657600080fd5b505160028054600160a060020a031916600160a060020a039283161790556001546040805160e060020a63bf40fac1028152602060048201819052601560248301527f5365637572697479546f6b656e5265676973747279000000000000000000000060448301529151929093169263bf40fac192606480830193928290030181600087803b1580156113f857600080fd5b505af115801561140c573d6000803e3d6000fd5b505050506040513d602081101561142257600080fd5b505160038054600160a060020a031916600160a060020a039283161790556001546040805160e060020a63bf40fac1028152602060048201819052600e60248301527f5469636b6572526567697374727900000000000000000000000000000000000060448301529151929093169263bf40fac192606480830193928290030181600087803b1580156114b457600080fd5b505af11580156114c8573d6000803e3d6000fd5b505050506040513d60208110156114de57600080fd5b505160048054600160a060020a031916600160a060020a039283161781556001546040805160e060020a63bf40fac10281526020938101849052600960248201527f506f6c79546f6b656e000000000000000000000000000000000000000000000060448201529051919093169263bf40fac19260648083019391928290030181600087803b15801561157057600080fd5b505af1158015611584573d6000803e3d6000fd5b505050506040513d602081101561159a57600080fd5b505160058054600160a060020a031916600160a060020a03909216919091179055565b60005460ff161515611619576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6000805460ff191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60005460ff16156116b3576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6000805460ff191660011790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1565b600160a060020a038116151561170a57600080fd5b60008054604051600160a060020a038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b8280548282559060005260206000209081019282156117d2579160200282015b828111156117d25782518254600160a060020a031916600160a060020a0390911617825560209092019160019091019061179d565b506117de9291506117e2565b5090565b61180691905b808211156117de578054600160a060020a03191681556001016117e8565b905600a165627a7a7230582087cf9289b74d713e4fece758b76455d0671b6c3b679b7d92b28b5cf4ef51cdfb0029",
  "deployedBytecode": "0x6080604052600436106101245763ffffffff60e060020a600035041663038defd781146101295780630db065f4146101605780631e79933f146101955780632a858126146101f45780632cdc054c146102255780633f4ba83a146102435780634b951cbe1461025857806356196dc91461027c5780635c975abb146102e75780635e14fb35146102fc5780636faa22a51461032c578063715018a61461034157806377282b70146103565780638456cb591461036b5780638905fd4f146103805780638da5cb5b146103a15780639b77d69f146103b6578063ad64ae4b14610413578063b95459e414610434578063ce4dbdff14610449578063dc6599071461045e578063eac5ab431461047f578063f2fde38b146104a5578063f433262f146104c6575b600080fd5b34801561013557600080fd5b5061014a600160a060020a03600435166104db565b6040805160ff9092168252519081900360200190f35b34801561016c57600080fd5b50610181600160a060020a03600435166104f0565b604080519115158252519081900360200190f35b3480156101a157600080fd5b506040805160206004602480358281013584810280870186019097528086526101f296843560ff16963696604495919490910192918291850190849080828437509497506105059650505050505050565b005b34801561020057600080fd5b506102096105f7565b60408051600160a060020a039092168252519081900360200190f35b34801561023157600080fd5b5061020960ff60043516602435610606565b34801561024f57600080fd5b506101f261063d565b34801561026457600080fd5b50610209600160a060020a0360043516602435610663565b34801561028857600080fd5b5061029760ff6004351661067e565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102d35781810151838201526020016102bb565b505050509050019250505060405180910390f35b3480156102f357600080fd5b506101816106e5565b34801561030857600080fd5b5061031a60ff600435166024356106ee565b60408051918252519081900360200190f35b34801561033857600080fd5b5061020961071e565b34801561034d57600080fd5b506101f261072d565b34801561036257600080fd5b506102096107a3565b34801561037757600080fd5b506101f26107b2565b34801561038c57600080fd5b506101f2600160a060020a03600435166107d6565b3480156103ad57600080fd5b5061020961094f565b3480156103c257600080fd5b506040805160206004602480358281013584810280870186019097528086526101f296843560ff16963696604495919490910192918291850190849080828437509497506109639650505050505050565b34801561041f57600080fd5b50610181600160a060020a03600435166109df565b34801561044057600080fd5b50610209610de8565b34801561045557600080fd5b50610209610df7565b34801561046a57600080fd5b506101f2600160a060020a0360043516610e06565b34801561048b57600080fd5b50610181600160a060020a03600435166024351515611164565b3480156104b157600080fd5b506101f2600160a060020a036004351661127e565b3480156104d257600080fd5b506101f26112a3565b60066020526000908152604090205460ff1681565b60096020526000908152604090205460ff1681565b6000805481906101009004600160a060020a0316331461052457600080fd5b600091505b60ff8085166000908152600a602052604090205490831610156105f1575060005b82518160ff1610156105e657828160ff1681518110151561056757fe5b9060200190602002015160001916600a60008660ff1660ff1681526020019081526020016000208360ff1681548110151561059e57fe5b60009182526020909120015414156105de5760ff8085166000908152600a602052604090208054909184169081106105d257fe5b60009182526020822001555b60010161054a565b600190910190610529565b50505050565b600454600160a060020a031681565b60086020528160005260406000208181548110151561062157fe5b600091825260209091200154600160a060020a03169150829050565b6000546101009004600160a060020a0316331461065957600080fd5b6106616115bd565b565b60076020528160005260406000208181548110151561062157fe5b60ff81166000908152600a60209081526040918290208054835181840281018401909452808452606093928301828280156106d957602002820191906000526020600020905b815481526001909101906020018083116106c4575b50505050509050919050565b60005460ff1681565b600a6020528160005260406000208181548110151561070957fe5b90600052602060002001600091509150505481565b600554600160a060020a031681565b6000546101009004600160a060020a0316331461074957600080fd5b60008054604051610100909104600160a060020a0316917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805474ffffffffffffffffffffffffffffffffffffffff0019169055565b600154600160a060020a031681565b6000546101009004600160a060020a031633146107ce57600080fd5b610661611658565b6000805481906101009004600160a060020a031633146107f557600080fd5b600160a060020a038316151561080a57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561086e57600080fd5b505af1158015610882573d6000803e3d6000fd5b505050506040513d602081101561089857600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152610100909204600160a060020a03908116600484015260248301859052905193945085169263a9059cbb92604480840193602093929083900390910190829087803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b505050506040513d602081101561093d57600080fd5b5051151561094a57600080fd5b505050565b6000546101009004600160a060020a031681565b600080546101009004600160a060020a0316331461098057600080fd5b5060005b81518160ff16101561094a5760ff8084166000908152600a602052604090208351909184919084169081106109b557fe5b60209081029091018101518254600181810185556000948552929093209092019190915501610984565b60008054819060ff1615610a3d576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831660009081526006602052604090205460ff1615610ad4576040805160e560020a62461bcd02815260206004820152602b60248201527f4d6f64756c6520666163746f72792073686f756c64206e6f742062652070726560448201527f2d72656769737465726564000000000000000000000000000000000000000000606482015290519081900360840190fd5b82905080600160a060020a03166315dae03e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610b1557600080fd5b505af1158015610b29573d6000803e3d6000fd5b505050506040513d6020811015610b3f57600080fd5b505160ff161515610bc0576040805160e560020a62461bcd02815260206004820152602260248201527f466163746f727920747970652073686f756c64206e6f7420657175616c20746f60448201527f2030000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b80600160a060020a03166315dae03e6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610bfe57600080fd5b505af1158015610c12573d6000803e3d6000fd5b505050506040513d6020811015610c2857600080fd5b5051600160a060020a038481166000908152600660209081526040808320805460ff191660ff9096169590951790945583517f15dae03e000000000000000000000000000000000000000000000000000000008152935160089492938616926315dae03e92600480830193919282900301818787803b158015610caa57600080fd5b505af1158015610cbe573d6000803e3d6000fd5b505050506040513d6020811015610cd457600080fd5b505160ff168152602080820192909252604090810160009081208054600181018255908252838220018054600160a060020a031916600160a060020a038816908117909155825182815280850180855291835260079094529190209151610d3c92919061177d565b5080600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610d7b57600080fd5b505af1158015610d8f573d6000803e3d6000fd5b505050506040513d6020811015610da557600080fd5b5051604051600160a060020a03918216918516907fae85ba22803e75ecc9115045a3a9e17c151fe6486fdb52acf6c0da16bbd38c1e90600090a350600192915050565b600254600160a060020a031681565b600354600160a060020a031681565b600354604080517fd300a9680000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163d300a968916024808201926020929091908290030181600087803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b505050506040513d6020811015610e9657600080fd5b50511561116157600160a060020a03811660009081526006602052604090205460ff161515610f35576040805160e560020a62461bcd02815260206004820152602260248201527f4d6f64756c65466163746f727920747970652073686f756c64206e6f7420626560448201527f2030000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03811660009081526009602052604090205460ff1680611057575033600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f9557600080fd5b505af1158015610fa9573d6000803e3d6000fd5b505050506040513d6020811015610fbf57600080fd5b5051604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a0392831692841691638da5cb5b9160048083019260209291908290030181600087803b15801561102057600080fd5b505af1158015611034573d6000803e3d6000fd5b505050506040513d602081101561104a57600080fd5b5051600160a060020a0316145b15156110f9576040805160e560020a62461bcd02815260206004820152604160248201527f4d6f64756c6520666163746f7279206973206e6f74207665726966696564206160448201527f732077656c6c206173206e6f742063616c6c656420627920746865206f776e6560648201527f7200000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600160a060020a038116600081815260076020908152604080832080546001810182559084529183209091018054600160a060020a0319163390811790915590519092917f6a29bd0f4ad1fa11b5da542f2cbb7caccf3f8547d9126b6708f294154b19351a91a35b50565b600080546101009004600160a060020a0316331461118157600080fd5b600160a060020a03831660009081526006602052604090205460ff161515611219576040805160e560020a62461bcd02815260206004820152603260248201527f4d6f64756c6520666163746f72792073686f756c642068617665206265656e2060448201527f616c726561647920726567697374657265640000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038316600081815260096020908152604091829020805460ff1916861515908117909155825190815291517f3023e432a59b6690d2e5f03154a5c5274aa8f3029a88625f964aaafbe9931e4e9281900390910190a250600192915050565b6000546101009004600160a060020a0316331461129a57600080fd5b611161816116f5565b6000546101009004600160a060020a031633146112bf57600080fd5b6001546040805160e060020a63bf40fac1028152602060048201819052600e60248301527f4d6f64756c65526567697374727900000000000000000000000000000000000060448301529151600160a060020a039093169263bf40fac1926064808401939192918290030181600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b505050506040513d602081101561136657600080fd5b505160028054600160a060020a031916600160a060020a039283161790556001546040805160e060020a63bf40fac1028152602060048201819052601560248301527f5365637572697479546f6b656e5265676973747279000000000000000000000060448301529151929093169263bf40fac192606480830193928290030181600087803b1580156113f857600080fd5b505af115801561140c573d6000803e3d6000fd5b505050506040513d602081101561142257600080fd5b505160038054600160a060020a031916600160a060020a039283161790556001546040805160e060020a63bf40fac1028152602060048201819052600e60248301527f5469636b6572526567697374727900000000000000000000000000000000000060448301529151929093169263bf40fac192606480830193928290030181600087803b1580156114b457600080fd5b505af11580156114c8573d6000803e3d6000fd5b505050506040513d60208110156114de57600080fd5b505160048054600160a060020a031916600160a060020a039283161781556001546040805160e060020a63bf40fac10281526020938101849052600960248201527f506f6c79546f6b656e000000000000000000000000000000000000000000000060448201529051919093169263bf40fac19260648083019391928290030181600087803b15801561157057600080fd5b505af1158015611584573d6000803e3d6000fd5b505050506040513d602081101561159a57600080fd5b505160058054600160a060020a031916600160a060020a03909216919091179055565b60005460ff161515611619576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6000805460ff191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60005460ff16156116b3576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6000805460ff191660011790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1565b600160a060020a038116151561170a57600080fd5b60008054604051600160a060020a038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b8280548282559060005260206000209081019282156117d2579160200282015b828111156117d25782518254600160a060020a031916600160a060020a0390911617825560209092019160019091019061179d565b506117de9291506117e2565b5090565b61180691905b808211156117de578054600160a060020a03191681556001016117e8565b905600a165627a7a7230582087cf9289b74d713e4fece758b76455d0671b6c3b679b7d92b28b5cf4ef51cdfb0029",
  "sourceMap": "467:5299:1:-;;;237:5:2;216:26;;-1:-1:-1;;216:26:2;;;1650:101:1;5:2:-1;;;;30:1;27;20:12;5:2;1650:101:1;;;;;;;;;;;;;567:5:64;:18;;-1:-1:-1;;;;;;567:18:64;575:10;567:18;;;;;1650:101:1;-1:-1:-1;;;;;412:31:5;;;;404:40;;;;;;454:16;:36;;-1:-1:-1;;;;;;454:36:5;-1:-1:-1;;;;;454:36:5;;;;;;;;;;-1:-1:-1;467:5299:1;;;-1:-1:-1;467:5299:1;;",
  "deployedSourceMap": "467:5299:1:-;;;;;;;;;-1:-1:-1;;;467:5299:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;672:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;672:42:1;-1:-1:-1;;;;;672:42:1;;;;;;;;;;;;;;;;;;;;;;;;1014:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1014:41:1;-1:-1:-1;;;;;1014:41:1;;;;;;;;;;;;;;;;;;;;;;;5100:406;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5100:406:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5100:406:1;;-1:-1:-1;5100:406:1;;-1:-1:-1;;;;;;;5100:406:1;;;281:29:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;281:29:5;;;;;;;;-1:-1:-1;;;;;281:29:5;;;;;;;;;;;;;;917:46:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;917:46:1;;;;;;;;;5572:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5572:64:1;;;;778:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;778:48:1;-1:-1:-1;;;;;778:48:1;;;;;;;4450:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4450:128:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4450:128:1;;;;;;;;;;;;;;;;;216:26:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;216:26:2;;;;1139:49:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1139:49:1;;;;;;;;;;;;;;;;;;;;;;;;;316:24:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;316:24:5;;;;827:111:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:111:64;;;;167:31:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;167:31:5;;;;5703:59:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5703:59:1;;;;426:281:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;426:281:4;-1:-1:-1;;;;;426:281:4;;;;;238:20:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:64;;;;4731:205:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4731:205:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4731:205:1;;-1:-1:-1;4731:205:1;;-1:-1:-1;;;;;;;4731:205:1;2884:619;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2884:619:1;-1:-1:-1;;;;;2884:619:1;;;;;204:29:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;204:29:5;;;;239:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;239:36:5;;;;1930:739:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1930:739:1;-1:-1:-1;;;;;1930:739:1;;;;;3892:374;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3892:374:1;-1:-1:-1;;;;;3892:374:1;;;;;;;;;1100:103:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1100:103:64;-1:-1:-1;;;;;1100:103:64;;;;;503:418:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;503:418:5;;;;672:42:1;;;;;;;;;;;;;;;:::o;1014:41::-;;;;;;;;;;;;;;;:::o;5100:406::-;5207:7;719:5:64;;5207:7:1;;719:5:64;;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;5217:1:1;5207:11;;5202:297;5224:26;;;;;;;;:13;:26;;;;;:33;5220:37;;;;5202:297;;;-1:-1:-1;5293:1:1;5278:211;5300:12;:19;5296:1;:23;;;5278:211;;;5381:12;5394:1;5381:15;;;;;;;;;;;;;;;;;;;;5348:48;;;:13;:26;5362:11;5348:26;;;;;;;;;;;;;;;5375:1;5348:29;;;;;;;;;;;;;;;;;;;;;;:48;5344:131;;;5427:26;;;;;;;;:13;:26;;;;;:29;;:26;;:29;;;;;;;;;;;;;;;;;5420:36;5344:131;5321:3;;5278:211;;;5259:3;;;;;5202:297;;;5100:406;;;;:::o;281:29:5:-;;;-1:-1:-1;;;;;281:29:5;;:::o;917:46:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;917:46:1;;-1:-1:-1;917:46:1;;-1:-1:-1;917:46:1:o;5572:64::-;719:5:64;;;;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;5619:10:1;:8;:10::i;:::-;5572:64::o;778:48::-;;;;;;;;;;;;;;;;;;;;4450:128;4545:26;;;;;;;:13;:26;;;;;;;;;4538:33;;;;;;;;;;;;;;;;;4517:9;;4538:33;;;4545:26;4538:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4450:128;;;:::o;216:26:2:-;;;;;;:::o;1139:49:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;316:24:5:-;;;-1:-1:-1;;;;;316:24:5;;:::o;827:111:64:-;719:5;;;;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;903:5;;;884:25;;903:5;;;;-1:-1:-1;;;;;903:5:64;;884:25;;;931:1;915:18;;-1:-1:-1;;915:18:64;;;827:111::o;167:31:5:-;;;-1:-1:-1;;;;;167:31:5;;:::o;5703:59:1:-;719:5:64;;;;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;5747:8:1;:6;:8::i;426:281:4:-;548:16;719:5:64;;548:16:4;;719:5:64;;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;-1:-1:-1;;;;;509:28:4;;;;501:37;;;;;;621:30;;;;;;645:4;621:30;;;;;;578:14;;-1:-1:-1;;;;;;621:15:4;;;;;:30;;;;;;;;;;;;;;-1:-1:-1;621:15:4;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;621:30:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;621:30:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;621:30:4;684:5;;;669:30;;;;;;684:5;;;;-1:-1:-1;;;;;684:5:4;;;669:30;;;;;;;;;;;;621;;-1:-1:-1;669:14:4;;;;;:30;;;;;621;;669;;;;;;;;;;;:14;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;669:30:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;669:30:4;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;669:30:4;661:39;;;;;;;;426:281;;;:::o;238:20:64:-;;;;;;-1:-1:-1;;;;;238:20:64;;:::o;4731:205:1:-;4827:7;719:5:64;;;;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;-1:-1:-1;4837:1:1;4822:107;4844:4;:11;4840:1;:15;;;4822:107;;;4877:26;;;;;;;;:13;:26;;;;;4909:7;;4877:26;;4909:4;;:7;;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;4877:40:1;;;;;;;;;;;;;;4857:3;4822:107;;2884:619;2963:4;397:6:2;;2963:4:1;;397:6:2;;396:7;388:38;;;;;-1:-1:-1;;;;;388:38:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2987:24:1;;;;;;:8;:24;;;;;;;;:29;2979:85;;;;;-1:-1:-1;;;;;2979:85:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3120:14;3074:61;;3153:13;-1:-1:-1;;;;;3153:21:1;;:23;;;;;-1:-1:-1;;;3153:23:1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3153:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3153:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3153:23:1;:28;;;;3145:75;;;;;-1:-1:-1;;;;;3145:75:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3257:13;-1:-1:-1;;;;;3257:21:1;;:23;;;;;-1:-1:-1;;;3257:23:1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3257:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3257:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3257:23:1;-1:-1:-1;;;;;3230:24:1;;;;;;;:8;3257:23;3230:24;;;;;;;:50;;-1:-1:-1;;3230:50:1;;;;;;;;;;;;3301:23;;;;;;;3290:10;;3230:24;;3301:21;;;;;:23;;;;;3257;;3301;;;;;3230:24;3301:21;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;3301:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3301:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3301:23:1;3290:35;;;;3301:23;3290:35;;;;;;;;;;;-1:-1:-1;3290:35:1;;;27:10:-1;;39:1;23:18;;45:23;;3290:56:1;;;;;;;;;-1:-1:-1;;;;;;3290:56:1;-1:-1:-1;;;;;3290:56:1;;;;;;;;3385:16;;;;;;;;;;;3356:26;;;:10;:26;;;;;;:45;;;;:26;3385:16;3356:45;:::i;:::-;;3453:13;-1:-1:-1;;;;;3453:19:1;;:21;;;;;-1:-1:-1;;;3453:21:1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3453:21:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3453:21:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3453:21:1;3416:59;;-1:-1:-1;;;;;3416:59:1;;;;;;;;;;;;-1:-1:-1;3492:4:1;;2884:619;-1:-1:-1;;2884:619:1:o;204:29:5:-;;;-1:-1:-1;;;;;204:29:5;;:::o;239:36::-;;;-1:-1:-1;;;;;239:36:5;;:::o;1930:739:1:-;2098:21;;2075:73;;;;;;2137:10;2075:73;;;;;;-1:-1:-1;;;;;2098:21:1;;;;2075:61;;:73;;;;;;;;;;;;;;;2098:21;;2075:73;;;5:2:-1;;;;30:1;27;20:12;5:2;2075:73:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2075:73:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2075:73:1;2071:592;;;-1:-1:-1;;;;;2172:24:1;;;;;;:8;:24;;;;;;;;:29;;2164:76;;;;;-1:-1:-1;;;;;2164:76:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2346:24:1;;;;;;:8;:24;;;;;;;;;:104;;;2430:10;-1:-1:-1;;;;;2415:32:1;;:34;;;;;-1:-1:-1;;;2415:34:1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2415:34:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2415:34:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2415:34:1;2373:38;;;;;;;;-1:-1:-1;;;;;2373:76:1;;;;:36;;;;;:38;;;;;2415:34;;2373:38;;;;;;;;:36;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;2373:38:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2373:38:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2373:38:1;-1:-1:-1;;;;;2373:76:1;;2346:104;2338:196;;;;;;;-1:-1:-1;;;;;2338:196:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2548:26:1;;;;;;:10;:26;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;2548:43:1;;;;;;;;;;;-1:-1:-1;;;;;;2548:43:1;2580:10;2548:43;;;;;;2610:42;;2580:10;;2548:26;2610:42;;;2071:592;1930:739;:::o;3892:374::-;3981:4;719:5:64;;;;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;-1:-1:-1;;;;;4049:24:1;;;;;;:8;:24;;;;;;;;:29;;4041:92;;;;;-1:-1:-1;;;;;4041:92:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4143:24:1;;;;;;:8;:24;;;;;;;;;:36;;-1:-1:-1;;4143:36:1;;;;;;;;;;4194:44;;;;;;;;;;;;;;;;;-1:-1:-1;4255:4:1;3892:374;;;;:::o;1100:103:64:-;719:5;;;;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;1169:29;1188:9;1169:18;:29::i;503:418:5:-;719:5:64;;;;;-1:-1:-1;;;;;719:5:64;705:10;:19;697:28;;;;;;594:16:5;;577:63;;;-1:-1:-1;;;;;577:63:5;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;594:16:5;;;;577:45;;:63;;;;;;;;;;;;;594:16;;577:63;;;5:2:-1;;;;30:1;27;20:12;5:2;577:63:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;577:63:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;577:63:5;560:14;:80;;-1:-1:-1;;;;;;560:80:5;-1:-1:-1;;;;;560:80:5;;;;;;-1:-1:-1;691:16:5;674:70;;;-1:-1:-1;;;;;674:70:5;;577:63;674:70;;;;;;;;;;;;;;;;;;691:16;;;;;674:45;;:70;;;;;577:63;674:70;;;;;-1:-1:-1;691:16:5;674:70;;;5:2:-1;;;;30:1;27;20:12;5:2;674:70:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;674:70:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;674:70:5;650:21;:94;;-1:-1:-1;;;;;;650:94:5;-1:-1:-1;;;;;650:94:5;;;;;;-1:-1:-1;788:16:5;771:63;;;-1:-1:-1;;;;;771:63:5;;674:70;771:63;;;;;;;;;;;;;;;;;;788:16;;;;;771:45;;:63;;;;;674:70;771:63;;;;;-1:-1:-1;788:16:5;771:63;;;5:2:-1;;;;30:1;27;20:12;5:2;771:63:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;771:63:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;771:63:5;754:14;:80;;-1:-1:-1;;;;;;754:80:5;-1:-1:-1;;;;;754:80:5;;;;;;-1:-1:-1;873:16:5;856:58;;;-1:-1:-1;;;;;856:58:5;;771:63;856:58;;;;;;;;;;;;;;;;;;873:16;;;;;856:45;;:58;;;;;771:63;;856:58;;;;;-1:-1:-1;873:16:5;856:58;;;5:2:-1;;;;30:1;27;20:12;5:2;856:58:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;856:58:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;856:58:5;844:9;:70;;-1:-1:-1;;;;;;844:70:5;-1:-1:-1;;;;;844:70:5;;;;;;;;;503:418::o;915:98:2:-;590:6;;;;582:41;;;;;;;-1:-1:-1;;;;;582:41:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:5;965:14;;-1:-1:-1;;965:14:2;;;994:12;;;1002:3;994:12;;;;;;;;;;;;;915:98::o;728:96::-;397:6;;;;396:7;388:38;;;;;-1:-1:-1;;;;;388:38:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:6;:13;;-1:-1:-1;;779:13:2;788:4;779:13;;;807:10;;;813:3;807:10;;;;;;;;;;;;;728:96::o;1338:171:64:-;-1:-1:-1;;;;;1408:23:64;;;;1400:32;;;;;;1464:5;;;1443:38;;-1:-1:-1;;;;;1443:38:64;;;;1464:5;;;;;;1443:38;;;1487:5;:17;;-1:-1:-1;;;;;1487:17:64;;;;;-1:-1:-1;;1487:17:64;;;;;;;;;1338:171::o;467:5299:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;467:5299:1;-1:-1:-1;;;;;467:5299:1;;;;;;;;;;;-1:-1:-1;467:5299:1;;;;;;;-1:-1:-1;467:5299:1;;;-1:-1:-1;467:5299:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;467:5299:1;;;;;;;;;:::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./interfaces/IModuleRegistry.sol\";\nimport \"./interfaces/IModuleFactory.sol\";\nimport \"./interfaces/ISecurityToken.sol\";\nimport \"./interfaces/ISecurityTokenRegistry.sol\";\nimport \"./Pausable.sol\";\nimport \"./RegistryUpdater.sol\";\nimport \"./ReclaimTokens.sol\";\n\n/**\n* @title Registry contract to store registered modules\n* @notice Anyone can register modules, but only those \"approved\" by Polymath will be available for issuers to add\n*/\ncontract ModuleRegistry is IModuleRegistry, Pausable, RegistryUpdater, ReclaimTokens {\n\n    // Mapping used to hold the type of module factory corresponds to the address of the Module factory contract\n    mapping (address => uint8) public registry;\n    // Mapping used to hold the reputation of the factory\n    mapping (address => address[]) public reputation;\n    // Mapping contain the list of addresses of Module factory for a particular type\n    mapping (uint8 => address[]) public moduleList;\n    // contains the list of verified modules\n    mapping (address => bool) public verified;\n    // Contains the list of the available tags corresponds to the module type\n    mapping (uint8 => bytes32[]) public availableTags;\n\n    // Emit when Module been used by the securityToken\n    event LogModuleUsed(address indexed _moduleFactory, address indexed _securityToken);\n    // Emit when the Module Factory get registered with the ModuleRegistry contract\n    event LogModuleRegistered(address indexed _moduleFactory, address indexed _owner);\n    // Emit when the module get verified by the Polymath team\n    event LogModuleVerified(address indexed _moduleFactory, bool _verified);\n\n    constructor (address _polymathRegistry) public\n        RegistryUpdater(_polymathRegistry)\n    {\n    }\n\n   /**\n    * @notice Called by a security token to notify the registry it is using a module\n    * @param _moduleFactory is the address of the relevant module factory\n    */\n    function useModule(address _moduleFactory) external {\n        //If caller is a registered security token, then register module usage\n        if (ISecurityTokenRegistry(securityTokenRegistry).isSecurityToken(msg.sender)) {\n            require(registry[_moduleFactory] != 0, \"ModuleFactory type should not be 0\");\n            //To use a module, either it must be verified, or owned by the ST owner\n            require(verified[_moduleFactory]||(IModuleFactory(_moduleFactory).owner() == ISecurityToken(msg.sender).owner()),\n              \"Module factory is not verified as well as not called by the owner\");\n            reputation[_moduleFactory].push(msg.sender);\n            emit LogModuleUsed (_moduleFactory, msg.sender);\n        }\n    }\n\n    /**\n    * @notice Called by moduleFactory owner to register new modules for SecurityToken to use\n    * @param _moduleFactory is the address of the module factory to be registered\n    * @return bool\n    */\n    function registerModule(address _moduleFactory) external whenNotPaused returns(bool) {\n        require(registry[_moduleFactory] == 0, \"Module factory should not be pre-registered\");\n        IModuleFactory moduleFactory = IModuleFactory(_moduleFactory);\n        require(moduleFactory.getType() != 0, \"Factory type should not equal to 0\");\n        registry[_moduleFactory] = moduleFactory.getType();\n        moduleList[moduleFactory.getType()].push(_moduleFactory);\n        reputation[_moduleFactory] = new address[](0);\n        emit LogModuleRegistered (_moduleFactory, moduleFactory.owner());\n        return true;\n    }\n\n    /**\n    * @notice Called by Polymath to verify modules for SecurityToken to use.\n    * @notice A module can not be used by an ST unless first approved/verified by Polymath\n    * @notice (The only exception to this is that the author of the module is the owner of the ST)\n    * @param _moduleFactory is the address of the module factory to be registered\n    * @return bool\n    */\n    function verifyModule(address _moduleFactory, bool _verified) external onlyOwner returns(bool) {\n        //Must already have been registered\n        require(registry[_moduleFactory] != 0, \"Module factory should have been already registered\");\n        verified[_moduleFactory] = _verified;\n        emit LogModuleVerified(_moduleFactory, _verified);\n        return true;\n    }\n\n    /**\n     * @notice Use to get all the tags releated to the functionality of the Module Factory.\n     * @param _moduleType Type of module\n     * @return bytes32 array\n     */\n    function getTagByModuleType(uint8 _moduleType) public view returns(bytes32[]) {\n        return availableTags[_moduleType];\n    }\n\n    /**\n     * @notice Add the tag for specified Module Factory\n     * @param _moduleType Type of module.\n     * @param _tag List of tags\n     */\n     function addTagByModuleType(uint8 _moduleType, bytes32[] _tag) public onlyOwner {\n         for (uint8 i = 0; i < _tag.length; i++) {\n             availableTags[_moduleType].push(_tag[i]);\n         }\n     }\n\n    /**\n     * @notice remove the tag for specified Module Factory\n     * @param _moduleType Type of module.\n     * @param _removedTags List of tags\n     */\n     function removeTagByModuleType(uint8 _moduleType, bytes32[] _removedTags) public onlyOwner {\n         for (uint8 i = 0; i < availableTags[_moduleType].length; i++) {\n            for (uint8 j = 0; j < _removedTags.length; j++) {\n                if (availableTags[_moduleType][i] == _removedTags[j]) {\n                    delete availableTags[_moduleType][i];\n                }\n            }\n        }\n     }\n\n     /**\n     * @notice pause registration function\n     */\n    function unpause() public onlyOwner  {\n        _unpause();\n    }\n\n    /**\n     * @notice unpause registration function\n     */\n    function pause() public onlyOwner {\n        _pause();\n    }\n\n\n}\n",
  "sourcePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/ModuleRegistry.sol",
  "ast": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/ModuleRegistry.sol",
    "exportedSymbols": {
      "ModuleRegistry": [
        410
      ]
    },
    "id": 411,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 60,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:1"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/IModuleRegistry.sol",
        "file": "./interfaces/IModuleRegistry.sol",
        "id": 61,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 9978,
        "src": "26:42:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/IModuleFactory.sol",
        "file": "./interfaces/IModuleFactory.sol",
        "id": 62,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 9955,
        "src": "69:41:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/ISecurityToken.sol",
        "file": "./interfaces/ISecurityToken.sol",
        "id": 63,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 10160,
        "src": "111:41:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/ISecurityTokenRegistry.sol",
        "file": "./interfaces/ISecurityTokenRegistry.sol",
        "id": 64,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 10242,
        "src": "153:49:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/Pausable.sol",
        "file": "./Pausable.sol",
        "id": 65,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 472,
        "src": "203:24:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/RegistryUpdater.sol",
        "file": "./RegistryUpdater.sol",
        "id": 66,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 677,
        "src": "228:31:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/ReclaimTokens.sol",
        "file": "./ReclaimTokens.sol",
        "id": 67,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 600,
        "src": "260:29:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 68,
              "name": "IModuleRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9977,
              "src": "494:15:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IModuleRegistry_$9977",
                "typeString": "contract IModuleRegistry"
              }
            },
            "id": 69,
            "nodeType": "InheritanceSpecifier",
            "src": "494:15:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 70,
              "name": "Pausable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 471,
              "src": "511:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Pausable_$471",
                "typeString": "contract Pausable"
              }
            },
            "id": 71,
            "nodeType": "InheritanceSpecifier",
            "src": "511:8:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 72,
              "name": "RegistryUpdater",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 676,
              "src": "521:15:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RegistryUpdater_$676",
                "typeString": "contract RegistryUpdater"
              }
            },
            "id": 73,
            "nodeType": "InheritanceSpecifier",
            "src": "521:15:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 74,
              "name": "ReclaimTokens",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 599,
              "src": "538:13:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReclaimTokens_$599",
                "typeString": "contract ReclaimTokens"
              }
            },
            "id": 75,
            "nodeType": "InheritanceSpecifier",
            "src": "538:13:1"
          }
        ],
        "contractDependencies": [
          471,
          599,
          676,
          9977,
          22664
        ],
        "contractKind": "contract",
        "documentation": "@title Registry contract to store registered modules\n@notice Anyone can register modules, but only those \"approved\" by Polymath will be available for issuers to add",
        "fullyImplemented": true,
        "id": 410,
        "linearizedBaseContracts": [
          410,
          599,
          676,
          22664,
          471,
          9977
        ],
        "name": "ModuleRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 79,
            "name": "registry",
            "nodeType": "VariableDeclaration",
            "scope": 410,
            "src": "672:42:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
              "typeString": "mapping(address => uint8)"
            },
            "typeName": {
              "id": 78,
              "keyType": {
                "id": 76,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "681:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "672:26:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
                "typeString": "mapping(address => uint8)"
              },
              "valueType": {
                "id": 77,
                "name": "uint8",
                "nodeType": "ElementaryTypeName",
                "src": "692:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 84,
            "name": "reputation",
            "nodeType": "VariableDeclaration",
            "scope": 410,
            "src": "778:48:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
              "typeString": "mapping(address => address[])"
            },
            "typeName": {
              "id": 83,
              "keyType": {
                "id": 80,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "787:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "778:30:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                "typeString": "mapping(address => address[])"
              },
              "valueType": {
                "baseType": {
                  "id": 81,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "798:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "id": 82,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "798:9:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 89,
            "name": "moduleList",
            "nodeType": "VariableDeclaration",
            "scope": 410,
            "src": "917:46:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_address_$dyn_storage_$",
              "typeString": "mapping(uint8 => address[])"
            },
            "typeName": {
              "id": 88,
              "keyType": {
                "id": 85,
                "name": "uint8",
                "nodeType": "ElementaryTypeName",
                "src": "926:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                }
              },
              "nodeType": "Mapping",
              "src": "917:28:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_address_$dyn_storage_$",
                "typeString": "mapping(uint8 => address[])"
              },
              "valueType": {
                "baseType": {
                  "id": 86,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "935:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "id": 87,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "935:9:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 93,
            "name": "verified",
            "nodeType": "VariableDeclaration",
            "scope": 410,
            "src": "1014:41:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 92,
              "keyType": {
                "id": 90,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1023:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1014:25:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 91,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1034:4:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 98,
            "name": "availableTags",
            "nodeType": "VariableDeclaration",
            "scope": 410,
            "src": "1139:49:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
              "typeString": "mapping(uint8 => bytes32[])"
            },
            "typeName": {
              "id": 97,
              "keyType": {
                "id": 94,
                "name": "uint8",
                "nodeType": "ElementaryTypeName",
                "src": "1148:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                }
              },
              "nodeType": "Mapping",
              "src": "1139:28:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                "typeString": "mapping(uint8 => bytes32[])"
              },
              "valueType": {
                "baseType": {
                  "id": 95,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1157:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "id": 96,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "1157:9:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 104,
            "name": "LogModuleUsed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 100,
                  "indexed": true,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 104,
                  "src": "1270:30:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 99,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1270:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 102,
                  "indexed": true,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 104,
                  "src": "1302:30:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 101,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1302:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1269:64:1"
            },
            "src": "1250:84:1"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 110,
            "name": "LogModuleRegistered",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 109,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 106,
                  "indexed": true,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1449:30:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 105,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1449:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 108,
                  "indexed": true,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1481:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 107,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1481:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1448:56:1"
            },
            "src": "1423:82:1"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 116,
            "name": "LogModuleVerified",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 112,
                  "indexed": true,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 116,
                  "src": "1596:30:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 111,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1596:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 114,
                  "indexed": false,
                  "name": "_verified",
                  "nodeType": "VariableDeclaration",
                  "scope": 116,
                  "src": "1628:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 113,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1628:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1595:48:1"
            },
            "src": "1572:72:1"
          },
          {
            "body": {
              "id": 124,
              "nodeType": "Block",
              "src": "1744:7:1",
              "statements": []
            },
            "documentation": null,
            "id": 125,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 121,
                    "name": "_polymathRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 118,
                    "src": "1721:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 122,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 120,
                  "name": "RegistryUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 676,
                  "src": "1705:15:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_RegistryUpdater_$676_$",
                    "typeString": "type(contract RegistryUpdater)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1705:34:1"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 118,
                  "name": "_polymathRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 125,
                  "src": "1663:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 117,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1663:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1662:27:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 123,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1744:0:1"
            },
            "scope": 410,
            "src": "1650:101:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 183,
              "nodeType": "Block",
              "src": "1982:687:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 134,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "2137:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 135,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2137:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 131,
                            "name": "securityTokenRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 611,
                            "src": "2098:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 130,
                          "name": "ISecurityTokenRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10241,
                          "src": "2075:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityTokenRegistry_$10241_$",
                            "typeString": "type(contract ISecurityTokenRegistry)"
                          }
                        },
                        "id": 132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2075:45:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityTokenRegistry_$10241",
                          "typeString": "contract ISecurityTokenRegistry"
                        }
                      },
                      "id": 133,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isSecurityToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10231,
                      "src": "2075:61:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2075:73:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 182,
                  "nodeType": "IfStatement",
                  "src": "2071:592:1",
                  "trueBody": {
                    "id": 181,
                    "nodeType": "Block",
                    "src": "2150:513:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 138,
                                  "name": "registry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 79,
                                  "src": "2172:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
                                    "typeString": "mapping(address => uint8)"
                                  }
                                },
                                "id": 140,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 139,
                                  "name": "_moduleFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 127,
                                  "src": "2181:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2172:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2200:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2172:29:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d6f64756c65466163746f727920747970652073686f756c64206e6f742062652030",
                              "id": 143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2203:36:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7391b564a89311f34e9dd63453bafae0e768f8f41887e443ae23b23d523fa257",
                                "typeString": "literal_string \"ModuleFactory type should not be 0\""
                              },
                              "value": "ModuleFactory type should not be 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7391b564a89311f34e9dd63453bafae0e768f8f41887e443ae23b23d523fa257",
                                "typeString": "literal_string \"ModuleFactory type should not be 0\""
                              }
                            ],
                            "id": 137,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              23134,
                              23135
                            ],
                            "referencedDeclaration": 23135,
                            "src": "2164:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2164:76:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 145,
                        "nodeType": "ExpressionStatement",
                        "src": "2164:76:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 147,
                                  "name": "verified",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 93,
                                  "src": "2346:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 149,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 148,
                                  "name": "_moduleFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 127,
                                  "src": "2355:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2346:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 151,
                                              "name": "_moduleFactory",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 127,
                                              "src": "2388:14:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 150,
                                            "name": "IModuleFactory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9954,
                                            "src": "2373:14:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IModuleFactory_$9954_$",
                                              "typeString": "type(contract IModuleFactory)"
                                            }
                                          },
                                          "id": 152,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2373:30:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                                            "typeString": "contract IModuleFactory"
                                          }
                                        },
                                        "id": 153,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "owner",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22582,
                                        "src": "2373:36:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                          "typeString": "function () view external returns (address)"
                                        }
                                      },
                                      "id": 154,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2373:38:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 156,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 23131,
                                                "src": "2430:3:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 157,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "2430:10:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 155,
                                            "name": "ISecurityToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10159,
                                            "src": "2415:14:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                              "typeString": "type(contract ISecurityToken)"
                                            }
                                          },
                                          "id": 158,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2415:26:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                            "typeString": "contract ISecurityToken"
                                          }
                                        },
                                        "id": 159,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "owner",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22582,
                                        "src": "2415:32:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                          "typeString": "function () view external returns (address)"
                                        }
                                      },
                                      "id": 160,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2415:34:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "2373:76:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 162,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2372:78:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2346:104:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d6f64756c6520666163746f7279206973206e6f742076657269666965642061732077656c6c206173206e6f742063616c6c656420627920746865206f776e6572",
                              "id": 164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2466:67:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a091faaeb04ee5f591d4debfb547c25ae8a49b93bf9cfa3faf6283b525d20700",
                                "typeString": "literal_string \"Module factory is not verified as well as not called by the owner\""
                              },
                              "value": "Module factory is not verified as well as not called by the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a091faaeb04ee5f591d4debfb547c25ae8a49b93bf9cfa3faf6283b525d20700",
                                "typeString": "literal_string \"Module factory is not verified as well as not called by the owner\""
                              }
                            ],
                            "id": 146,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              23134,
                              23135
                            ],
                            "referencedDeclaration": 23135,
                            "src": "2338:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2338:196:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 166,
                        "nodeType": "ExpressionStatement",
                        "src": "2338:196:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 171,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23131,
                                "src": "2580:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2580:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 167,
                                "name": "reputation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 84,
                                "src": "2548:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                  "typeString": "mapping(address => address[] storage ref)"
                                }
                              },
                              "id": 169,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 168,
                                "name": "_moduleFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 127,
                                "src": "2559:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2548:26:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 170,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2548:31:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) returns (uint256)"
                            }
                          },
                          "id": 173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2548:43:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 174,
                        "nodeType": "ExpressionStatement",
                        "src": "2548:43:1"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 176,
                              "name": "_moduleFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 127,
                              "src": "2625:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 177,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23131,
                                "src": "2641:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2641:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 175,
                            "name": "LogModuleUsed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 104,
                            "src": "2610:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2610:42:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 180,
                        "nodeType": "EmitStatement",
                        "src": "2605:47:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Called by a security token to notify the registry it is using a module\n@param _moduleFactory is the address of the relevant module factory",
            "id": 184,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "useModule",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 128,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 127,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 184,
                  "src": "1949:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 126,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1949:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1948:24:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 129,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1982:0:1"
            },
            "scope": 410,
            "src": "1930:739:1",
            "stateMutability": "nonpayable",
            "superFunction": 9961,
            "visibility": "external"
          },
          {
            "body": {
              "id": 253,
              "nodeType": "Block",
              "src": "2969:534:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 194,
                            "name": "registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 79,
                            "src": "2987:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
                              "typeString": "mapping(address => uint8)"
                            }
                          },
                          "id": 196,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 195,
                            "name": "_moduleFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 186,
                            "src": "2996:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2987:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3015:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2987:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6f64756c6520666163746f72792073686f756c64206e6f74206265207072652d72656769737465726564",
                        "id": 199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3018:45:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8d3d036c971a7a629ea74a700718a55e59278c9fa5003a5e189e06d3f7bbe23d",
                          "typeString": "literal_string \"Module factory should not be pre-registered\""
                        },
                        "value": "Module factory should not be pre-registered"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8d3d036c971a7a629ea74a700718a55e59278c9fa5003a5e189e06d3f7bbe23d",
                          "typeString": "literal_string \"Module factory should not be pre-registered\""
                        }
                      ],
                      "id": 193,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2979:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2979:85:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 201,
                  "nodeType": "ExpressionStatement",
                  "src": "2979:85:1"
                },
                {
                  "assignments": [
                    203
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 203,
                      "name": "moduleFactory",
                      "nodeType": "VariableDeclaration",
                      "scope": 254,
                      "src": "3074:28:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                        "typeString": "contract IModuleFactory"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 202,
                        "name": "IModuleFactory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9954,
                        "src": "3074:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                          "typeString": "contract IModuleFactory"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 207,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 205,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 186,
                        "src": "3120:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 204,
                      "name": "IModuleFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9954,
                      "src": "3105:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IModuleFactory_$9954_$",
                        "typeString": "type(contract IModuleFactory)"
                      }
                    },
                    "id": 206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3105:30:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                      "typeString": "contract IModuleFactory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3074:61:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 213,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 209,
                              "name": "moduleFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 203,
                              "src": "3153:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                                "typeString": "contract IModuleFactory"
                              }
                            },
                            "id": 210,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9809,
                            "src": "3153:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3153:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3180:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3153:28:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "466163746f727920747970652073686f756c64206e6f7420657175616c20746f2030",
                        "id": 214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3183:36:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cda12fd6f5f5bab8c73432526eebe1085ac3abc735dd00890a2d07487563e70e",
                          "typeString": "literal_string \"Factory type should not equal to 0\""
                        },
                        "value": "Factory type should not equal to 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cda12fd6f5f5bab8c73432526eebe1085ac3abc735dd00890a2d07487563e70e",
                          "typeString": "literal_string \"Factory type should not equal to 0\""
                        }
                      ],
                      "id": 208,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "3145:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3145:75:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 216,
                  "nodeType": "ExpressionStatement",
                  "src": "3145:75:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 217,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 79,
                        "src": "3230:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
                          "typeString": "mapping(address => uint8)"
                        }
                      },
                      "id": 219,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 218,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 186,
                        "src": "3239:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3230:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 220,
                          "name": "moduleFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 203,
                          "src": "3257:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                            "typeString": "contract IModuleFactory"
                          }
                        },
                        "id": 221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getType",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9809,
                        "src": "3257:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                          "typeString": "function () view external returns (uint8)"
                        }
                      },
                      "id": 222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3257:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "3230:50:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 224,
                  "nodeType": "ExpressionStatement",
                  "src": "3230:50:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 231,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 186,
                        "src": "3331:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 225,
                          "name": "moduleList",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 89,
                          "src": "3290:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(uint8 => address[] storage ref)"
                          }
                        },
                        "id": 229,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 226,
                              "name": "moduleFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 203,
                              "src": "3301:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                                "typeString": "contract IModuleFactory"
                              }
                            },
                            "id": 227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9809,
                            "src": "3301:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3301:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3290:35:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3290:40:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) returns (uint256)"
                      }
                    },
                    "id": 232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3290:56:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 233,
                  "nodeType": "ExpressionStatement",
                  "src": "3290:56:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 234,
                        "name": "reputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 84,
                        "src": "3356:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                          "typeString": "mapping(address => address[] storage ref)"
                        }
                      },
                      "id": 236,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 235,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 186,
                        "src": "3367:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3356:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3399:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "3385:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                          "typeString": "function (uint256) pure returns (address[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 237,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3389:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 238,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3389:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        }
                      },
                      "id": 241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3385:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory",
                        "typeString": "address[] memory"
                      }
                    },
                    "src": "3356:45:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "id": 243,
                  "nodeType": "ExpressionStatement",
                  "src": "3356:45:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 245,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 186,
                        "src": "3437:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 246,
                            "name": "moduleFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 203,
                            "src": "3453:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                              "typeString": "contract IModuleFactory"
                            }
                          },
                          "id": 247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22582,
                          "src": "3453:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3453:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 244,
                      "name": "LogModuleRegistered",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 110,
                      "src": "3416:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3416:59:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 250,
                  "nodeType": "EmitStatement",
                  "src": "3411:64:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3492:4:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 192,
                  "id": 252,
                  "nodeType": "Return",
                  "src": "3485:11:1"
                }
              ]
            },
            "documentation": "@notice Called by moduleFactory owner to register new modules for SecurityToken to use\n@param _moduleFactory is the address of the module factory to be registered\n@return bool",
            "id": 254,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 189,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 188,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 433,
                  "src": "2941:13:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2941:13:1"
              }
            ],
            "name": "registerModule",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 186,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 254,
                  "src": "2908:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 185,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2908:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2907:24:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 191,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 254,
                  "src": "2963:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 190,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2963:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2962:6:1"
            },
            "scope": 410,
            "src": "2884:619:1",
            "stateMutability": "nonpayable",
            "superFunction": 9968,
            "visibility": "external"
          },
          {
            "body": {
              "id": 287,
              "nodeType": "Block",
              "src": "3987:279:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 266,
                            "name": "registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 79,
                            "src": "4049:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
                              "typeString": "mapping(address => uint8)"
                            }
                          },
                          "id": 268,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 267,
                            "name": "_moduleFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 256,
                            "src": "4058:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4049:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4077:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4049:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6f64756c6520666163746f72792073686f756c642068617665206265656e20616c72656164792072656769737465726564",
                        "id": 271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4080:52:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e342814818ee3a021793276d37b715311ae6ec76fd9b15b4503653da258be869",
                          "typeString": "literal_string \"Module factory should have been already registered\""
                        },
                        "value": "Module factory should have been already registered"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e342814818ee3a021793276d37b715311ae6ec76fd9b15b4503653da258be869",
                          "typeString": "literal_string \"Module factory should have been already registered\""
                        }
                      ],
                      "id": 265,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4041:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4041:92:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 273,
                  "nodeType": "ExpressionStatement",
                  "src": "4041:92:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 274,
                        "name": "verified",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 93,
                        "src": "4143:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 276,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 275,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 256,
                        "src": "4152:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4143:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 277,
                      "name": "_verified",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 258,
                      "src": "4170:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4143:36:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 279,
                  "nodeType": "ExpressionStatement",
                  "src": "4143:36:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 281,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 256,
                        "src": "4212:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 282,
                        "name": "_verified",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 258,
                        "src": "4228:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 280,
                      "name": "LogModuleVerified",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 116,
                      "src": "4194:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,bool)"
                      }
                    },
                    "id": 283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4194:44:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 284,
                  "nodeType": "EmitStatement",
                  "src": "4189:49:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4255:4:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 264,
                  "id": 286,
                  "nodeType": "Return",
                  "src": "4248:11:1"
                }
              ]
            },
            "documentation": "@notice Called by Polymath to verify modules for SecurityToken to use.\n@notice A module can not be used by an ST unless first approved/verified by Polymath\n@notice (The only exception to this is that the author of the module is the owner of the ST)\n@param _moduleFactory is the address of the module factory to be registered\n@return bool",
            "id": 288,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 261,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 260,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "3963:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3963:9:1"
              }
            ],
            "name": "verifyModule",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 259,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 256,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 288,
                  "src": "3914:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 255,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3914:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 258,
                  "name": "_verified",
                  "nodeType": "VariableDeclaration",
                  "scope": 288,
                  "src": "3938:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 257,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3938:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3913:40:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 264,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 263,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 288,
                  "src": "3981:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 262,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3981:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3980:6:1"
            },
            "scope": 410,
            "src": "3892:374:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 300,
              "nodeType": "Block",
              "src": "4528:50:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 296,
                      "name": "availableTags",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 98,
                      "src": "4545:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                        "typeString": "mapping(uint8 => bytes32[] storage ref)"
                      }
                    },
                    "id": 298,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 297,
                      "name": "_moduleType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 290,
                      "src": "4559:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4545:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "functionReturnParameters": 295,
                  "id": 299,
                  "nodeType": "Return",
                  "src": "4538:33:1"
                }
              ]
            },
            "documentation": "@notice Use to get all the tags releated to the functionality of the Module Factory.\n@param _moduleType Type of module\n@return bytes32 array",
            "id": 301,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTagByModuleType",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 290,
                  "name": "_moduleType",
                  "nodeType": "VariableDeclaration",
                  "scope": 301,
                  "src": "4478:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 289,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4478:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4477:19:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 294,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 301,
                  "src": "4517:9:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 292,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4517:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 293,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4517:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4516:11:1"
            },
            "scope": 410,
            "src": "4450:128:1",
            "stateMutability": "view",
            "superFunction": 9976,
            "visibility": "public"
          },
          {
            "body": {
              "id": 333,
              "nodeType": "Block",
              "src": "4811:125:1",
              "statements": [
                {
                  "body": {
                    "id": 331,
                    "nodeType": "Block",
                    "src": "4862:67:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 326,
                                "name": "_tag",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 306,
                                "src": "4909:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 328,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 327,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "4914:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4909:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 322,
                                "name": "availableTags",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 98,
                                "src": "4877:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                                  "typeString": "mapping(uint8 => bytes32[] storage ref)"
                                }
                              },
                              "id": 324,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 323,
                                "name": "_moduleType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 303,
                                "src": "4891:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4877:26:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4877:31:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) returns (uint256)"
                            }
                          },
                          "id": 329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4877:40:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 330,
                        "nodeType": "ExpressionStatement",
                        "src": "4877:40:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 315,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 312,
                      "src": "4840:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 316,
                        "name": "_tag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 306,
                        "src": "4844:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4844:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4840:15:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 332,
                  "initializationExpression": {
                    "assignments": [
                      312
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 312,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 334,
                        "src": "4827:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 311,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4827:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 314,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4837:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4827:11:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 320,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4857:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 319,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 312,
                        "src": "4857:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 321,
                    "nodeType": "ExpressionStatement",
                    "src": "4857:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "4822:107:1"
                }
              ]
            },
            "documentation": "@notice Add the tag for specified Module Factory\n@param _moduleType Type of module.\n@param _tag List of tags",
            "id": 334,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 309,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 308,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "4801:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4801:9:1"
              }
            ],
            "name": "addTagByModuleType",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 303,
                  "name": "_moduleType",
                  "nodeType": "VariableDeclaration",
                  "scope": 334,
                  "src": "4759:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 302,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4759:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 306,
                  "name": "_tag",
                  "nodeType": "VariableDeclaration",
                  "scope": 334,
                  "src": "4778:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 304,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4778:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 305,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4778:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4758:35:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 310,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4811:0:1"
            },
            "scope": 410,
            "src": "4731:205:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 390,
              "nodeType": "Block",
              "src": "5191:315:1",
              "statements": [
                {
                  "body": {
                    "id": 388,
                    "nodeType": "Block",
                    "src": "5264:235:1",
                    "statements": [
                      {
                        "body": {
                          "id": 386,
                          "nodeType": "Block",
                          "src": "5326:163:1",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 376,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 368,
                                      "name": "availableTags",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 98,
                                      "src": "5348:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                                        "typeString": "mapping(uint8 => bytes32[] storage ref)"
                                      }
                                    },
                                    "id": 370,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 369,
                                      "name": "_moduleType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 336,
                                      "src": "5362:11:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5348:26:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 372,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 371,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 345,
                                    "src": "5375:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5348:29:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 373,
                                    "name": "_removedTags",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 339,
                                    "src": "5381:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 375,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 374,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 358,
                                    "src": "5394:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5381:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "5348:48:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 385,
                              "nodeType": "IfStatement",
                              "src": "5344:131:1",
                              "trueBody": {
                                "id": 384,
                                "nodeType": "Block",
                                "src": "5398:77:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 382,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "delete",
                                      "prefix": true,
                                      "src": "5420:36:1",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 377,
                                            "name": "availableTags",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 98,
                                            "src": "5427:13:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                                              "typeString": "mapping(uint8 => bytes32[] storage ref)"
                                            }
                                          },
                                          "id": 379,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 378,
                                            "name": "_moduleType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 336,
                                            "src": "5441:11:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "5427:26:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                            "typeString": "bytes32[] storage ref"
                                          }
                                        },
                                        "id": 381,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 380,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 345,
                                          "src": "5454:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "5427:29:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 383,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5420:36:1"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 361,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 358,
                            "src": "5296:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 362,
                              "name": "_removedTags",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 339,
                              "src": "5300:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5300:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5296:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 387,
                        "initializationExpression": {
                          "assignments": [
                            358
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 358,
                              "name": "j",
                              "nodeType": "VariableDeclaration",
                              "scope": 391,
                              "src": "5283:7:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "typeName": {
                                "id": 357,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "5283:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 360,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 359,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5293:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5283:11:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 366,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5321:3:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 365,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 358,
                              "src": "5321:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "id": 367,
                          "nodeType": "ExpressionStatement",
                          "src": "5321:3:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "5278:211:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 353,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 348,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 345,
                      "src": "5220:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 349,
                          "name": "availableTags",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 98,
                          "src": "5224:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                            "typeString": "mapping(uint8 => bytes32[] storage ref)"
                          }
                        },
                        "id": 351,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 350,
                          "name": "_moduleType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 336,
                          "src": "5238:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5224:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 352,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5224:33:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5220:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 389,
                  "initializationExpression": {
                    "assignments": [
                      345
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 345,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 391,
                        "src": "5207:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 344,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5207:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 347,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5217:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5207:11:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5259:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 354,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 345,
                        "src": "5259:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 356,
                    "nodeType": "ExpressionStatement",
                    "src": "5259:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "5202:297:1"
                }
              ]
            },
            "documentation": "@notice remove the tag for specified Module Factory\n@param _moduleType Type of module.\n@param _removedTags List of tags",
            "id": 391,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 342,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 341,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "5181:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5181:9:1"
              }
            ],
            "name": "removeTagByModuleType",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 336,
                  "name": "_moduleType",
                  "nodeType": "VariableDeclaration",
                  "scope": 391,
                  "src": "5131:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 335,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5131:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 339,
                  "name": "_removedTags",
                  "nodeType": "VariableDeclaration",
                  "scope": 391,
                  "src": "5150:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 337,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5150:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 338,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5150:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5130:43:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 343,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5191:0:1"
            },
            "scope": 410,
            "src": "5100:406:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 399,
              "nodeType": "Block",
              "src": "5609:27:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 396,
                      "name": "_unpause",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 470,
                      "src": "5619:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5619:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 398,
                  "nodeType": "ExpressionStatement",
                  "src": "5619:10:1"
                }
              ]
            },
            "documentation": "@notice pause registration function",
            "id": 400,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 394,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 393,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "5598:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5598:9:1"
              }
            ],
            "name": "unpause",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 392,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5588:2:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 395,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5609:0:1"
            },
            "scope": 410,
            "src": "5572:64:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 408,
              "nodeType": "Block",
              "src": "5737:25:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 405,
                      "name": "_pause",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 456,
                      "src": "5747:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5747:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 407,
                  "nodeType": "ExpressionStatement",
                  "src": "5747:8:1"
                }
              ]
            },
            "documentation": "@notice unpause registration function",
            "id": 409,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 403,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 402,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "5727:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5727:9:1"
              }
            ],
            "name": "pause",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 401,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5717:2:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 404,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5737:0:1"
            },
            "scope": 410,
            "src": "5703:59:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 411,
        "src": "467:5299:1"
      }
    ],
    "src": "0:5767:1"
  },
  "legacyAST": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/ModuleRegistry.sol",
    "exportedSymbols": {
      "ModuleRegistry": [
        410
      ]
    },
    "id": 411,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 60,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:1"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/IModuleRegistry.sol",
        "file": "./interfaces/IModuleRegistry.sol",
        "id": 61,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 9978,
        "src": "26:42:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/IModuleFactory.sol",
        "file": "./interfaces/IModuleFactory.sol",
        "id": 62,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 9955,
        "src": "69:41:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/ISecurityToken.sol",
        "file": "./interfaces/ISecurityToken.sol",
        "id": 63,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 10160,
        "src": "111:41:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/ISecurityTokenRegistry.sol",
        "file": "./interfaces/ISecurityTokenRegistry.sol",
        "id": 64,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 10242,
        "src": "153:49:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/Pausable.sol",
        "file": "./Pausable.sol",
        "id": 65,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 472,
        "src": "203:24:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/RegistryUpdater.sol",
        "file": "./RegistryUpdater.sol",
        "id": 66,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 677,
        "src": "228:31:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/ReclaimTokens.sol",
        "file": "./ReclaimTokens.sol",
        "id": 67,
        "nodeType": "ImportDirective",
        "scope": 411,
        "sourceUnit": 600,
        "src": "260:29:1",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 68,
              "name": "IModuleRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9977,
              "src": "494:15:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IModuleRegistry_$9977",
                "typeString": "contract IModuleRegistry"
              }
            },
            "id": 69,
            "nodeType": "InheritanceSpecifier",
            "src": "494:15:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 70,
              "name": "Pausable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 471,
              "src": "511:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Pausable_$471",
                "typeString": "contract Pausable"
              }
            },
            "id": 71,
            "nodeType": "InheritanceSpecifier",
            "src": "511:8:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 72,
              "name": "RegistryUpdater",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 676,
              "src": "521:15:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RegistryUpdater_$676",
                "typeString": "contract RegistryUpdater"
              }
            },
            "id": 73,
            "nodeType": "InheritanceSpecifier",
            "src": "521:15:1"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 74,
              "name": "ReclaimTokens",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 599,
              "src": "538:13:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReclaimTokens_$599",
                "typeString": "contract ReclaimTokens"
              }
            },
            "id": 75,
            "nodeType": "InheritanceSpecifier",
            "src": "538:13:1"
          }
        ],
        "contractDependencies": [
          471,
          599,
          676,
          9977,
          22664
        ],
        "contractKind": "contract",
        "documentation": "@title Registry contract to store registered modules\n@notice Anyone can register modules, but only those \"approved\" by Polymath will be available for issuers to add",
        "fullyImplemented": true,
        "id": 410,
        "linearizedBaseContracts": [
          410,
          599,
          676,
          22664,
          471,
          9977
        ],
        "name": "ModuleRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 79,
            "name": "registry",
            "nodeType": "VariableDeclaration",
            "scope": 410,
            "src": "672:42:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
              "typeString": "mapping(address => uint8)"
            },
            "typeName": {
              "id": 78,
              "keyType": {
                "id": 76,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "681:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "672:26:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
                "typeString": "mapping(address => uint8)"
              },
              "valueType": {
                "id": 77,
                "name": "uint8",
                "nodeType": "ElementaryTypeName",
                "src": "692:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 84,
            "name": "reputation",
            "nodeType": "VariableDeclaration",
            "scope": 410,
            "src": "778:48:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
              "typeString": "mapping(address => address[])"
            },
            "typeName": {
              "id": 83,
              "keyType": {
                "id": 80,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "787:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "778:30:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                "typeString": "mapping(address => address[])"
              },
              "valueType": {
                "baseType": {
                  "id": 81,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "798:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "id": 82,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "798:9:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 89,
            "name": "moduleList",
            "nodeType": "VariableDeclaration",
            "scope": 410,
            "src": "917:46:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_address_$dyn_storage_$",
              "typeString": "mapping(uint8 => address[])"
            },
            "typeName": {
              "id": 88,
              "keyType": {
                "id": 85,
                "name": "uint8",
                "nodeType": "ElementaryTypeName",
                "src": "926:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                }
              },
              "nodeType": "Mapping",
              "src": "917:28:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_address_$dyn_storage_$",
                "typeString": "mapping(uint8 => address[])"
              },
              "valueType": {
                "baseType": {
                  "id": 86,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "935:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "id": 87,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "935:9:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 93,
            "name": "verified",
            "nodeType": "VariableDeclaration",
            "scope": 410,
            "src": "1014:41:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 92,
              "keyType": {
                "id": 90,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1023:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1014:25:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 91,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1034:4:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 98,
            "name": "availableTags",
            "nodeType": "VariableDeclaration",
            "scope": 410,
            "src": "1139:49:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
              "typeString": "mapping(uint8 => bytes32[])"
            },
            "typeName": {
              "id": 97,
              "keyType": {
                "id": 94,
                "name": "uint8",
                "nodeType": "ElementaryTypeName",
                "src": "1148:5:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                }
              },
              "nodeType": "Mapping",
              "src": "1139:28:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                "typeString": "mapping(uint8 => bytes32[])"
              },
              "valueType": {
                "baseType": {
                  "id": 95,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1157:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "id": 96,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "1157:9:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 104,
            "name": "LogModuleUsed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 100,
                  "indexed": true,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 104,
                  "src": "1270:30:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 99,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1270:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 102,
                  "indexed": true,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 104,
                  "src": "1302:30:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 101,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1302:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1269:64:1"
            },
            "src": "1250:84:1"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 110,
            "name": "LogModuleRegistered",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 109,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 106,
                  "indexed": true,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1449:30:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 105,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1449:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 108,
                  "indexed": true,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1481:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 107,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1481:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1448:56:1"
            },
            "src": "1423:82:1"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 116,
            "name": "LogModuleVerified",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 112,
                  "indexed": true,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 116,
                  "src": "1596:30:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 111,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1596:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 114,
                  "indexed": false,
                  "name": "_verified",
                  "nodeType": "VariableDeclaration",
                  "scope": 116,
                  "src": "1628:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 113,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1628:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1595:48:1"
            },
            "src": "1572:72:1"
          },
          {
            "body": {
              "id": 124,
              "nodeType": "Block",
              "src": "1744:7:1",
              "statements": []
            },
            "documentation": null,
            "id": 125,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 121,
                    "name": "_polymathRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 118,
                    "src": "1721:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 122,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 120,
                  "name": "RegistryUpdater",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 676,
                  "src": "1705:15:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_RegistryUpdater_$676_$",
                    "typeString": "type(contract RegistryUpdater)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1705:34:1"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 118,
                  "name": "_polymathRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 125,
                  "src": "1663:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 117,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1663:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1662:27:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 123,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1744:0:1"
            },
            "scope": 410,
            "src": "1650:101:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 183,
              "nodeType": "Block",
              "src": "1982:687:1",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 134,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23131,
                          "src": "2137:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 135,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2137:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 131,
                            "name": "securityTokenRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 611,
                            "src": "2098:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 130,
                          "name": "ISecurityTokenRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10241,
                          "src": "2075:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISecurityTokenRegistry_$10241_$",
                            "typeString": "type(contract ISecurityTokenRegistry)"
                          }
                        },
                        "id": 132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2075:45:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISecurityTokenRegistry_$10241",
                          "typeString": "contract ISecurityTokenRegistry"
                        }
                      },
                      "id": 133,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isSecurityToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10231,
                      "src": "2075:61:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2075:73:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 182,
                  "nodeType": "IfStatement",
                  "src": "2071:592:1",
                  "trueBody": {
                    "id": 181,
                    "nodeType": "Block",
                    "src": "2150:513:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 138,
                                  "name": "registry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 79,
                                  "src": "2172:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
                                    "typeString": "mapping(address => uint8)"
                                  }
                                },
                                "id": 140,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 139,
                                  "name": "_moduleFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 127,
                                  "src": "2181:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2172:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2200:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2172:29:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d6f64756c65466163746f727920747970652073686f756c64206e6f742062652030",
                              "id": 143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2203:36:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7391b564a89311f34e9dd63453bafae0e768f8f41887e443ae23b23d523fa257",
                                "typeString": "literal_string \"ModuleFactory type should not be 0\""
                              },
                              "value": "ModuleFactory type should not be 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7391b564a89311f34e9dd63453bafae0e768f8f41887e443ae23b23d523fa257",
                                "typeString": "literal_string \"ModuleFactory type should not be 0\""
                              }
                            ],
                            "id": 137,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              23134,
                              23135
                            ],
                            "referencedDeclaration": 23135,
                            "src": "2164:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2164:76:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 145,
                        "nodeType": "ExpressionStatement",
                        "src": "2164:76:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 147,
                                  "name": "verified",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 93,
                                  "src": "2346:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 149,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 148,
                                  "name": "_moduleFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 127,
                                  "src": "2355:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2346:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 151,
                                              "name": "_moduleFactory",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 127,
                                              "src": "2388:14:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 150,
                                            "name": "IModuleFactory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9954,
                                            "src": "2373:14:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IModuleFactory_$9954_$",
                                              "typeString": "type(contract IModuleFactory)"
                                            }
                                          },
                                          "id": 152,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2373:30:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                                            "typeString": "contract IModuleFactory"
                                          }
                                        },
                                        "id": 153,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "owner",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22582,
                                        "src": "2373:36:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                          "typeString": "function () view external returns (address)"
                                        }
                                      },
                                      "id": 154,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2373:38:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 156,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 23131,
                                                "src": "2430:3:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 157,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "2430:10:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 155,
                                            "name": "ISecurityToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10159,
                                            "src": "2415:14:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                              "typeString": "type(contract ISecurityToken)"
                                            }
                                          },
                                          "id": 158,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2415:26:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                            "typeString": "contract ISecurityToken"
                                          }
                                        },
                                        "id": 159,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "owner",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 22582,
                                        "src": "2415:32:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                          "typeString": "function () view external returns (address)"
                                        }
                                      },
                                      "id": 160,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2415:34:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "2373:76:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 162,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2372:78:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2346:104:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d6f64756c6520666163746f7279206973206e6f742076657269666965642061732077656c6c206173206e6f742063616c6c656420627920746865206f776e6572",
                              "id": 164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2466:67:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a091faaeb04ee5f591d4debfb547c25ae8a49b93bf9cfa3faf6283b525d20700",
                                "typeString": "literal_string \"Module factory is not verified as well as not called by the owner\""
                              },
                              "value": "Module factory is not verified as well as not called by the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a091faaeb04ee5f591d4debfb547c25ae8a49b93bf9cfa3faf6283b525d20700",
                                "typeString": "literal_string \"Module factory is not verified as well as not called by the owner\""
                              }
                            ],
                            "id": 146,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              23134,
                              23135
                            ],
                            "referencedDeclaration": 23135,
                            "src": "2338:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2338:196:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 166,
                        "nodeType": "ExpressionStatement",
                        "src": "2338:196:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 171,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23131,
                                "src": "2580:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2580:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 167,
                                "name": "reputation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 84,
                                "src": "2548:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                  "typeString": "mapping(address => address[] storage ref)"
                                }
                              },
                              "id": 169,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 168,
                                "name": "_moduleFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 127,
                                "src": "2559:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2548:26:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 170,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2548:31:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) returns (uint256)"
                            }
                          },
                          "id": 173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2548:43:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 174,
                        "nodeType": "ExpressionStatement",
                        "src": "2548:43:1"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 176,
                              "name": "_moduleFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 127,
                              "src": "2625:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 177,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23131,
                                "src": "2641:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2641:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 175,
                            "name": "LogModuleUsed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 104,
                            "src": "2610:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2610:42:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 180,
                        "nodeType": "EmitStatement",
                        "src": "2605:47:1"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Called by a security token to notify the registry it is using a module\n@param _moduleFactory is the address of the relevant module factory",
            "id": 184,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "useModule",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 128,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 127,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 184,
                  "src": "1949:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 126,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1949:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1948:24:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 129,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1982:0:1"
            },
            "scope": 410,
            "src": "1930:739:1",
            "stateMutability": "nonpayable",
            "superFunction": 9961,
            "visibility": "external"
          },
          {
            "body": {
              "id": 253,
              "nodeType": "Block",
              "src": "2969:534:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 194,
                            "name": "registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 79,
                            "src": "2987:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
                              "typeString": "mapping(address => uint8)"
                            }
                          },
                          "id": 196,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 195,
                            "name": "_moduleFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 186,
                            "src": "2996:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2987:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3015:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2987:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6f64756c6520666163746f72792073686f756c64206e6f74206265207072652d72656769737465726564",
                        "id": 199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3018:45:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8d3d036c971a7a629ea74a700718a55e59278c9fa5003a5e189e06d3f7bbe23d",
                          "typeString": "literal_string \"Module factory should not be pre-registered\""
                        },
                        "value": "Module factory should not be pre-registered"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8d3d036c971a7a629ea74a700718a55e59278c9fa5003a5e189e06d3f7bbe23d",
                          "typeString": "literal_string \"Module factory should not be pre-registered\""
                        }
                      ],
                      "id": 193,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2979:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2979:85:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 201,
                  "nodeType": "ExpressionStatement",
                  "src": "2979:85:1"
                },
                {
                  "assignments": [
                    203
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 203,
                      "name": "moduleFactory",
                      "nodeType": "VariableDeclaration",
                      "scope": 254,
                      "src": "3074:28:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                        "typeString": "contract IModuleFactory"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 202,
                        "name": "IModuleFactory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9954,
                        "src": "3074:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                          "typeString": "contract IModuleFactory"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 207,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 205,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 186,
                        "src": "3120:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 204,
                      "name": "IModuleFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9954,
                      "src": "3105:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IModuleFactory_$9954_$",
                        "typeString": "type(contract IModuleFactory)"
                      }
                    },
                    "id": 206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3105:30:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                      "typeString": "contract IModuleFactory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3074:61:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 213,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 209,
                              "name": "moduleFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 203,
                              "src": "3153:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                                "typeString": "contract IModuleFactory"
                              }
                            },
                            "id": 210,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9809,
                            "src": "3153:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3153:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3180:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3153:28:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "466163746f727920747970652073686f756c64206e6f7420657175616c20746f2030",
                        "id": 214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3183:36:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cda12fd6f5f5bab8c73432526eebe1085ac3abc735dd00890a2d07487563e70e",
                          "typeString": "literal_string \"Factory type should not equal to 0\""
                        },
                        "value": "Factory type should not equal to 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cda12fd6f5f5bab8c73432526eebe1085ac3abc735dd00890a2d07487563e70e",
                          "typeString": "literal_string \"Factory type should not equal to 0\""
                        }
                      ],
                      "id": 208,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "3145:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3145:75:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 216,
                  "nodeType": "ExpressionStatement",
                  "src": "3145:75:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 217,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 79,
                        "src": "3230:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
                          "typeString": "mapping(address => uint8)"
                        }
                      },
                      "id": 219,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 218,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 186,
                        "src": "3239:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3230:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 220,
                          "name": "moduleFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 203,
                          "src": "3257:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                            "typeString": "contract IModuleFactory"
                          }
                        },
                        "id": 221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getType",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9809,
                        "src": "3257:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                          "typeString": "function () view external returns (uint8)"
                        }
                      },
                      "id": 222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3257:23:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "3230:50:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 224,
                  "nodeType": "ExpressionStatement",
                  "src": "3230:50:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 231,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 186,
                        "src": "3331:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 225,
                          "name": "moduleList",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 89,
                          "src": "3290:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(uint8 => address[] storage ref)"
                          }
                        },
                        "id": 229,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 226,
                              "name": "moduleFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 203,
                              "src": "3301:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                                "typeString": "contract IModuleFactory"
                              }
                            },
                            "id": 227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9809,
                            "src": "3301:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3301:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3290:35:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3290:40:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) returns (uint256)"
                      }
                    },
                    "id": 232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3290:56:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 233,
                  "nodeType": "ExpressionStatement",
                  "src": "3290:56:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 234,
                        "name": "reputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 84,
                        "src": "3356:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                          "typeString": "mapping(address => address[] storage ref)"
                        }
                      },
                      "id": 236,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 235,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 186,
                        "src": "3367:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3356:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3399:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "3385:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                          "typeString": "function (uint256) pure returns (address[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 237,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3389:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 238,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3389:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        }
                      },
                      "id": 241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3385:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory",
                        "typeString": "address[] memory"
                      }
                    },
                    "src": "3356:45:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "id": 243,
                  "nodeType": "ExpressionStatement",
                  "src": "3356:45:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 245,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 186,
                        "src": "3437:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 246,
                            "name": "moduleFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 203,
                            "src": "3453:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IModuleFactory_$9954",
                              "typeString": "contract IModuleFactory"
                            }
                          },
                          "id": 247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22582,
                          "src": "3453:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3453:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 244,
                      "name": "LogModuleRegistered",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 110,
                      "src": "3416:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3416:59:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 250,
                  "nodeType": "EmitStatement",
                  "src": "3411:64:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3492:4:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 192,
                  "id": 252,
                  "nodeType": "Return",
                  "src": "3485:11:1"
                }
              ]
            },
            "documentation": "@notice Called by moduleFactory owner to register new modules for SecurityToken to use\n@param _moduleFactory is the address of the module factory to be registered\n@return bool",
            "id": 254,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 189,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 188,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 433,
                  "src": "2941:13:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2941:13:1"
              }
            ],
            "name": "registerModule",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 186,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 254,
                  "src": "2908:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 185,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2908:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2907:24:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 191,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 254,
                  "src": "2963:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 190,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2963:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2962:6:1"
            },
            "scope": 410,
            "src": "2884:619:1",
            "stateMutability": "nonpayable",
            "superFunction": 9968,
            "visibility": "external"
          },
          {
            "body": {
              "id": 287,
              "nodeType": "Block",
              "src": "3987:279:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 266,
                            "name": "registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 79,
                            "src": "4049:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint8_$",
                              "typeString": "mapping(address => uint8)"
                            }
                          },
                          "id": 268,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 267,
                            "name": "_moduleFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 256,
                            "src": "4058:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4049:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4077:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4049:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6f64756c6520666163746f72792073686f756c642068617665206265656e20616c72656164792072656769737465726564",
                        "id": 271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4080:52:1",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e342814818ee3a021793276d37b715311ae6ec76fd9b15b4503653da258be869",
                          "typeString": "literal_string \"Module factory should have been already registered\""
                        },
                        "value": "Module factory should have been already registered"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e342814818ee3a021793276d37b715311ae6ec76fd9b15b4503653da258be869",
                          "typeString": "literal_string \"Module factory should have been already registered\""
                        }
                      ],
                      "id": 265,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4041:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4041:92:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 273,
                  "nodeType": "ExpressionStatement",
                  "src": "4041:92:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 274,
                        "name": "verified",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 93,
                        "src": "4143:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 276,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 275,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 256,
                        "src": "4152:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4143:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 277,
                      "name": "_verified",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 258,
                      "src": "4170:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4143:36:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 279,
                  "nodeType": "ExpressionStatement",
                  "src": "4143:36:1"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 281,
                        "name": "_moduleFactory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 256,
                        "src": "4212:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 282,
                        "name": "_verified",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 258,
                        "src": "4228:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 280,
                      "name": "LogModuleVerified",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 116,
                      "src": "4194:17:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,bool)"
                      }
                    },
                    "id": 283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4194:44:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 284,
                  "nodeType": "EmitStatement",
                  "src": "4189:49:1"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4255:4:1",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 264,
                  "id": 286,
                  "nodeType": "Return",
                  "src": "4248:11:1"
                }
              ]
            },
            "documentation": "@notice Called by Polymath to verify modules for SecurityToken to use.\n@notice A module can not be used by an ST unless first approved/verified by Polymath\n@notice (The only exception to this is that the author of the module is the owner of the ST)\n@param _moduleFactory is the address of the module factory to be registered\n@return bool",
            "id": 288,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 261,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 260,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "3963:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3963:9:1"
              }
            ],
            "name": "verifyModule",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 259,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 256,
                  "name": "_moduleFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 288,
                  "src": "3914:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 255,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3914:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 258,
                  "name": "_verified",
                  "nodeType": "VariableDeclaration",
                  "scope": 288,
                  "src": "3938:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 257,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3938:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3913:40:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 264,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 263,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 288,
                  "src": "3981:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 262,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3981:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3980:6:1"
            },
            "scope": 410,
            "src": "3892:374:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 300,
              "nodeType": "Block",
              "src": "4528:50:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 296,
                      "name": "availableTags",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 98,
                      "src": "4545:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                        "typeString": "mapping(uint8 => bytes32[] storage ref)"
                      }
                    },
                    "id": 298,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 297,
                      "name": "_moduleType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 290,
                      "src": "4559:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4545:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "functionReturnParameters": 295,
                  "id": 299,
                  "nodeType": "Return",
                  "src": "4538:33:1"
                }
              ]
            },
            "documentation": "@notice Use to get all the tags releated to the functionality of the Module Factory.\n@param _moduleType Type of module\n@return bytes32 array",
            "id": 301,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTagByModuleType",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 290,
                  "name": "_moduleType",
                  "nodeType": "VariableDeclaration",
                  "scope": 301,
                  "src": "4478:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 289,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4478:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4477:19:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 294,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 301,
                  "src": "4517:9:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 292,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4517:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 293,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4517:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4516:11:1"
            },
            "scope": 410,
            "src": "4450:128:1",
            "stateMutability": "view",
            "superFunction": 9976,
            "visibility": "public"
          },
          {
            "body": {
              "id": 333,
              "nodeType": "Block",
              "src": "4811:125:1",
              "statements": [
                {
                  "body": {
                    "id": 331,
                    "nodeType": "Block",
                    "src": "4862:67:1",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 326,
                                "name": "_tag",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 306,
                                "src": "4909:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 328,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 327,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 312,
                                "src": "4914:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4909:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 322,
                                "name": "availableTags",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 98,
                                "src": "4877:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                                  "typeString": "mapping(uint8 => bytes32[] storage ref)"
                                }
                              },
                              "id": 324,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 323,
                                "name": "_moduleType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 303,
                                "src": "4891:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4877:26:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4877:31:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) returns (uint256)"
                            }
                          },
                          "id": 329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4877:40:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 330,
                        "nodeType": "ExpressionStatement",
                        "src": "4877:40:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 315,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 312,
                      "src": "4840:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 316,
                        "name": "_tag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 306,
                        "src": "4844:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4844:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4840:15:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 332,
                  "initializationExpression": {
                    "assignments": [
                      312
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 312,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 334,
                        "src": "4827:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 311,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4827:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 314,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4837:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4827:11:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 320,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4857:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 319,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 312,
                        "src": "4857:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 321,
                    "nodeType": "ExpressionStatement",
                    "src": "4857:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "4822:107:1"
                }
              ]
            },
            "documentation": "@notice Add the tag for specified Module Factory\n@param _moduleType Type of module.\n@param _tag List of tags",
            "id": 334,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 309,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 308,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "4801:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4801:9:1"
              }
            ],
            "name": "addTagByModuleType",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 303,
                  "name": "_moduleType",
                  "nodeType": "VariableDeclaration",
                  "scope": 334,
                  "src": "4759:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 302,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4759:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 306,
                  "name": "_tag",
                  "nodeType": "VariableDeclaration",
                  "scope": 334,
                  "src": "4778:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 304,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4778:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 305,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4778:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4758:35:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 310,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4811:0:1"
            },
            "scope": 410,
            "src": "4731:205:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 390,
              "nodeType": "Block",
              "src": "5191:315:1",
              "statements": [
                {
                  "body": {
                    "id": 388,
                    "nodeType": "Block",
                    "src": "5264:235:1",
                    "statements": [
                      {
                        "body": {
                          "id": 386,
                          "nodeType": "Block",
                          "src": "5326:163:1",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 376,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 368,
                                      "name": "availableTags",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 98,
                                      "src": "5348:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                                        "typeString": "mapping(uint8 => bytes32[] storage ref)"
                                      }
                                    },
                                    "id": 370,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 369,
                                      "name": "_moduleType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 336,
                                      "src": "5362:11:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5348:26:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 372,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 371,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 345,
                                    "src": "5375:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5348:29:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 373,
                                    "name": "_removedTags",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 339,
                                    "src": "5381:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 375,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 374,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 358,
                                    "src": "5394:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5381:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "5348:48:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 385,
                              "nodeType": "IfStatement",
                              "src": "5344:131:1",
                              "trueBody": {
                                "id": 384,
                                "nodeType": "Block",
                                "src": "5398:77:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 382,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "delete",
                                      "prefix": true,
                                      "src": "5420:36:1",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 377,
                                            "name": "availableTags",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 98,
                                            "src": "5427:13:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                                              "typeString": "mapping(uint8 => bytes32[] storage ref)"
                                            }
                                          },
                                          "id": 379,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 378,
                                            "name": "_moduleType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 336,
                                            "src": "5441:11:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "5427:26:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                            "typeString": "bytes32[] storage ref"
                                          }
                                        },
                                        "id": 381,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 380,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 345,
                                          "src": "5454:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "5427:29:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 383,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5420:36:1"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 361,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 358,
                            "src": "5296:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 362,
                              "name": "_removedTags",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 339,
                              "src": "5300:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5300:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5296:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 387,
                        "initializationExpression": {
                          "assignments": [
                            358
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 358,
                              "name": "j",
                              "nodeType": "VariableDeclaration",
                              "scope": 391,
                              "src": "5283:7:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "typeName": {
                                "id": 357,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "5283:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 360,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 359,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5293:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5283:11:1"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 366,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5321:3:1",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 365,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 358,
                              "src": "5321:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "id": 367,
                          "nodeType": "ExpressionStatement",
                          "src": "5321:3:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "5278:211:1"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 353,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 348,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 345,
                      "src": "5220:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 349,
                          "name": "availableTags",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 98,
                          "src": "5224:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint8_$_t_array$_t_bytes32_$dyn_storage_$",
                            "typeString": "mapping(uint8 => bytes32[] storage ref)"
                          }
                        },
                        "id": 351,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 350,
                          "name": "_moduleType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 336,
                          "src": "5238:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5224:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                          "typeString": "bytes32[] storage ref"
                        }
                      },
                      "id": 352,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5224:33:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5220:37:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 389,
                  "initializationExpression": {
                    "assignments": [
                      345
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 345,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 391,
                        "src": "5207:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 344,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5207:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 347,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5217:1:1",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5207:11:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5259:3:1",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 354,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 345,
                        "src": "5259:1:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 356,
                    "nodeType": "ExpressionStatement",
                    "src": "5259:3:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "5202:297:1"
                }
              ]
            },
            "documentation": "@notice remove the tag for specified Module Factory\n@param _moduleType Type of module.\n@param _removedTags List of tags",
            "id": 391,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 342,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 341,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "5181:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5181:9:1"
              }
            ],
            "name": "removeTagByModuleType",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 336,
                  "name": "_moduleType",
                  "nodeType": "VariableDeclaration",
                  "scope": 391,
                  "src": "5131:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 335,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "5131:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 339,
                  "name": "_removedTags",
                  "nodeType": "VariableDeclaration",
                  "scope": 391,
                  "src": "5150:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 337,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5150:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 338,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5150:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5130:43:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 343,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5191:0:1"
            },
            "scope": 410,
            "src": "5100:406:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 399,
              "nodeType": "Block",
              "src": "5609:27:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 396,
                      "name": "_unpause",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 470,
                      "src": "5619:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5619:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 398,
                  "nodeType": "ExpressionStatement",
                  "src": "5619:10:1"
                }
              ]
            },
            "documentation": "@notice pause registration function",
            "id": 400,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 394,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 393,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "5598:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5598:9:1"
              }
            ],
            "name": "unpause",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 392,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5588:2:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 395,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5609:0:1"
            },
            "scope": 410,
            "src": "5572:64:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 408,
              "nodeType": "Block",
              "src": "5737:25:1",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 405,
                      "name": "_pause",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 456,
                      "src": "5747:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5747:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 407,
                  "nodeType": "ExpressionStatement",
                  "src": "5747:8:1"
                }
              ]
            },
            "documentation": "@notice unpause registration function",
            "id": 409,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 403,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 402,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 22612,
                  "src": "5727:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5727:9:1"
              }
            ],
            "name": "pause",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 401,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5717:2:1"
            },
            "payable": false,
            "returnParameters": {
              "id": 404,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5737:0:1"
            },
            "scope": 410,
            "src": "5703:59:1",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 411,
        "src": "467:5299:1"
      }
    ],
    "src": "0:5767:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {
    "15": {
      "events": {
        "0x6a29bd0f4ad1fa11b5da542f2cbb7caccf3f8547d9126b6708f294154b19351a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_moduleFactory",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "_securityToken",
              "type": "address"
            }
          ],
          "name": "LogModuleUsed",
          "type": "event"
        },
        "0xae85ba22803e75ecc9115045a3a9e17c151fe6486fdb52acf6c0da16bbd38c1e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_moduleFactory",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "_owner",
              "type": "address"
            }
          ],
          "name": "LogModuleRegistered",
          "type": "event"
        },
        "0x3023e432a59b6690d2e5f03154a5c5274aa8f3029a88625f964aaafbe9931e4e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_moduleFactory",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_verified",
              "type": "bool"
            }
          ],
          "name": "LogModuleVerified",
          "type": "event"
        },
        "0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "previousOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipRenounced",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0x68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "name": "_timestammp",
              "type": "uint256"
            }
          ],
          "name": "Pause",
          "type": "event"
        },
        "0xaaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab7": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "name": "_timestamp",
              "type": "uint256"
            }
          ],
          "name": "Unpause",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x50c8b21d5b8ad4e642c7124cbee1f285ab0ce730",
      "transactionHash": "0x71e95cc8c53935ebf1c8d31b8cbc8f606f2d8d4a2d931a02304c12a3a50a6e03"
    }
  },
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-08-21T09:48:28.908Z"
}