{
  "contractName": "UserAuthority",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "rootAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "adminAdr",
          "type": "address"
        }
      ],
      "name": "createAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "userAdr",
          "type": "address"
        }
      ],
      "name": "createUser",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "userAdr",
          "type": "address"
        },
        {
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "setUserContract",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "userAdr",
          "type": "address"
        },
        {
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "setRole",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "userAdr",
          "type": "address"
        },
        {
          "name": "reputation",
          "type": "uint256"
        }
      ],
      "name": "setReputation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "userAdr",
          "type": "address"
        },
        {
          "name": "validity",
          "type": "bool"
        }
      ],
      "name": "setValidity",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "userAdr",
          "type": "address"
        }
      ],
      "name": "getUser",
      "outputs": [
        {
          "name": "contractAddress",
          "type": "address"
        },
        {
          "name": "role",
          "type": "uint256"
        },
        {
          "name": "reputation",
          "type": "uint256"
        },
        {
          "name": "validity",
          "type": "bool"
        },
        {
          "name": "managedUsers",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "userAdr",
          "type": "address"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getManagedUser",
      "outputs": [
        {
          "name": "adr",
          "type": "address"
        },
        {
          "name": "more",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "userAdr",
          "type": "address"
        },
        {
          "name": "managerAdr",
          "type": "address"
        }
      ],
      "name": "isUserManager",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506000805433600160a060020a0319918216178083556040805160a0810182528481526002602080830182815260058486019081526001606080870182815260808801828152600160a060020a039a8b168d5283875298909b2087518154909b169a9099169990991788559151918701919091555191850191909155945160038401805460ff191691151591909117905590518051939491936100b992600485019201906100c3565b509050505061014f565b828054828255906000526020600020908101928215610118579160200282015b828111156101185782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906100e3565b50610124929150610128565b5090565b61014c91905b80821115610124578054600160a060020a031916815560010161012e565b90565b610adc8061015e6000396000f3fe60806040526004361061008a5763ffffffff60e060020a60003504166304020595811461008f578063648243f2146100c45780636f77926b1461012057806374277a631461018a57806398e03c30146101c3578063aaa2b8c814610212578063b120c16a14610243578063cdd876181461027c578063e55ec2cc146102af578063f4142a36146102ea575b600080fd5b34801561009b57600080fd5b506100c2600480360360208110156100b257600080fd5b5035600160a060020a0316610325565b005b3480156100d057600080fd5b506100fd600480360360408110156100e757600080fd5b50600160a060020a038135169060200135610480565b60408051600160a060020a03909316835290151560208301528051918290030190f35b34801561012c57600080fd5b506101536004803603602081101561014357600080fd5b5035600160a060020a0316610566565b60408051600160a060020a039096168652602086019490945284840192909252151560608401526080830152519081900360a00190f35b34801561019657600080fd5b506100c2600480360360408110156101ad57600080fd5b50600160a060020a0381351690602001356105f1565b3480156101cf57600080fd5b506101fe600480360360408110156101e657600080fd5b50600160a060020a03813581169160200135166106e8565b604080519115158252519081900360200190f35b34801561021e57600080fd5b5061022761071a565b60408051600160a060020a039092168252519081900360200190f35b34801561024f57600080fd5b506100c26004803603604081101561026657600080fd5b50600160a060020a038135169060200135610729565b34801561028857600080fd5b506100c26004803603602081101561029f57600080fd5b5035600160a060020a03166107b4565b3480156102bb57600080fd5b506100c2600480360360408110156102d257600080fd5b50600160a060020a03813581169160200135166108b0565b3480156102f657600080fd5b506100c26004803603604081101561030d57600080fd5b50600160a060020a038135169060200135151561094a565b336000908152600160208190526040909120810154101561038f576040805160e560020a62461bcd0281526020600482015260256024820152600080516020610a71833981519152604482015260d960020a6431ba34b7b702606482015290519081900360840190fd5b6040805160a0810182526000808252600160208084018281526003858701818152606080880186815260808901828152600160a060020a038c81168a528888529a90982089518154600160a060020a0319169b169a909a178a559351958901959095555160028801559051908601805460ff191691151591909117905591518051919492610425926004850192909101906109e4565b50505050600160a060020a031660008181526001602081815260408084203385526005018252808420805460ff1916841790558282528320600401805492830181558352909120018054600160a060020a0319169091179055565b600160a060020a038216600090815260016020526040812060040154819015806104e35750600160a060020a03841660009081526001602052604081206004018054859081106104cc57fe5b600091825260209091200154600160a060020a0316145b156104f35750600090508061055f565b600160a060020a0384166000908152600160205260408120600401546000190184101561051e575060015b600160a060020a038516600090815260016020526040902060040180548590811061054557fe5b600091825260209091200154600160a060020a0316925090505b9250929050565b600160a060020a038116600090815260016020526040812060030154819081908190819060ff16156105d857505050600160a060020a03808416600090815260016020819052604090912080549181015460028201546003830154600490930154939094169550935060ff16906105e8565b5060009350839250829150819050805b91939590929450565b336000908152600160208190526040822001548391108015610618575061061881336106e8565b151561065c576040805160e560020a62461bcd0281526020600482015260136024820152600080516020610a91833981519152604482015290519081900360640190fd5b33600090815260016020819052604090912001548211156106c7576040805160e560020a62461bcd02815260206004820152601860248201527f43616e27742073657420616e2068696768657220726f6c650000000000000000604482015290519081900360640190fd5b50600160a060020a0390911660009081526001602081905260409091200155565b600160a060020a0391821660009081526001602090815260408083209390941682526005909201909152205460ff1690565b600054600160a060020a031681565b336000908152600160208190526040822001548391108015610750575061075081336106e8565b1515610794576040805160e560020a62461bcd0281526020600482015260136024820152600080516020610a91833981519152604482015290519081900360640190fd5b50600160a060020a03909116600090815260016020526040902060020155565b336000908152600160208190526040822001541161081b576040805160e560020a62461bcd0281526020600482015260256024820152600080516020610a71833981519152604482015260d960020a6431ba34b7b702606482015290519081900360840190fd5b6040805160a0810182526000808252602080830182815260038486018181526001606080880182815260808901828152600160a060020a038c81168a528489529a90982089518154600160a060020a0319169b169a909a178a55945191890191909155905160028801559151908601805460ff19169115159190911790559151805192949261042592600485019201906109e4565b3360009081526001602081905260408220015483911080156108d757506108d781336106e8565b151561091b576040805160e560020a62461bcd0281526020600482015260136024820152600080516020610a91833981519152604482015290519081900360640190fd5b50600160a060020a0391821660009081526001602052604090208054600160a060020a03191691909216179055565b336000908152600160208190526040822001548391108015610971575061097181336106e8565b15156109b5576040805160e560020a62461bcd0281526020600482015260136024820152600080516020610a91833981519152604482015290519081900360640190fd5b50600160a060020a03919091166000908152600160205260409020600301805460ff1916911515919091179055565b828054828255906000526020600020908101928215610a39579160200282015b82811115610a395782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190610a04565b50610a45929150610a49565b5090565b610a6d91905b80821115610a45578054600160a060020a0319168155600101610a4f565b9056fe546865206163636f756e742063616e277420706572666f726d20746869732061556e617574686f72697a656420616374696f6e00000000000000000000000000a165627a7a72305820e6affa619ee6a4e72fa55bd2b855766df8d24986d62f21b7de831f48111e5bc70029",
  "deployedBytecode": "0x60806040526004361061008a5763ffffffff60e060020a60003504166304020595811461008f578063648243f2146100c45780636f77926b1461012057806374277a631461018a57806398e03c30146101c3578063aaa2b8c814610212578063b120c16a14610243578063cdd876181461027c578063e55ec2cc146102af578063f4142a36146102ea575b600080fd5b34801561009b57600080fd5b506100c2600480360360208110156100b257600080fd5b5035600160a060020a0316610325565b005b3480156100d057600080fd5b506100fd600480360360408110156100e757600080fd5b50600160a060020a038135169060200135610480565b60408051600160a060020a03909316835290151560208301528051918290030190f35b34801561012c57600080fd5b506101536004803603602081101561014357600080fd5b5035600160a060020a0316610566565b60408051600160a060020a039096168652602086019490945284840192909252151560608401526080830152519081900360a00190f35b34801561019657600080fd5b506100c2600480360360408110156101ad57600080fd5b50600160a060020a0381351690602001356105f1565b3480156101cf57600080fd5b506101fe600480360360408110156101e657600080fd5b50600160a060020a03813581169160200135166106e8565b604080519115158252519081900360200190f35b34801561021e57600080fd5b5061022761071a565b60408051600160a060020a039092168252519081900360200190f35b34801561024f57600080fd5b506100c26004803603604081101561026657600080fd5b50600160a060020a038135169060200135610729565b34801561028857600080fd5b506100c26004803603602081101561029f57600080fd5b5035600160a060020a03166107b4565b3480156102bb57600080fd5b506100c2600480360360408110156102d257600080fd5b50600160a060020a03813581169160200135166108b0565b3480156102f657600080fd5b506100c26004803603604081101561030d57600080fd5b50600160a060020a038135169060200135151561094a565b336000908152600160208190526040909120810154101561038f576040805160e560020a62461bcd0281526020600482015260256024820152600080516020610a71833981519152604482015260d960020a6431ba34b7b702606482015290519081900360840190fd5b6040805160a0810182526000808252600160208084018281526003858701818152606080880186815260808901828152600160a060020a038c81168a528888529a90982089518154600160a060020a0319169b169a909a178a559351958901959095555160028801559051908601805460ff191691151591909117905591518051919492610425926004850192909101906109e4565b50505050600160a060020a031660008181526001602081815260408084203385526005018252808420805460ff1916841790558282528320600401805492830181558352909120018054600160a060020a0319169091179055565b600160a060020a038216600090815260016020526040812060040154819015806104e35750600160a060020a03841660009081526001602052604081206004018054859081106104cc57fe5b600091825260209091200154600160a060020a0316145b156104f35750600090508061055f565b600160a060020a0384166000908152600160205260408120600401546000190184101561051e575060015b600160a060020a038516600090815260016020526040902060040180548590811061054557fe5b600091825260209091200154600160a060020a0316925090505b9250929050565b600160a060020a038116600090815260016020526040812060030154819081908190819060ff16156105d857505050600160a060020a03808416600090815260016020819052604090912080549181015460028201546003830154600490930154939094169550935060ff16906105e8565b5060009350839250829150819050805b91939590929450565b336000908152600160208190526040822001548391108015610618575061061881336106e8565b151561065c576040805160e560020a62461bcd0281526020600482015260136024820152600080516020610a91833981519152604482015290519081900360640190fd5b33600090815260016020819052604090912001548211156106c7576040805160e560020a62461bcd02815260206004820152601860248201527f43616e27742073657420616e2068696768657220726f6c650000000000000000604482015290519081900360640190fd5b50600160a060020a0390911660009081526001602081905260409091200155565b600160a060020a0391821660009081526001602090815260408083209390941682526005909201909152205460ff1690565b600054600160a060020a031681565b336000908152600160208190526040822001548391108015610750575061075081336106e8565b1515610794576040805160e560020a62461bcd0281526020600482015260136024820152600080516020610a91833981519152604482015290519081900360640190fd5b50600160a060020a03909116600090815260016020526040902060020155565b336000908152600160208190526040822001541161081b576040805160e560020a62461bcd0281526020600482015260256024820152600080516020610a71833981519152604482015260d960020a6431ba34b7b702606482015290519081900360840190fd5b6040805160a0810182526000808252602080830182815260038486018181526001606080880182815260808901828152600160a060020a038c81168a528489529a90982089518154600160a060020a0319169b169a909a178a55945191890191909155905160028801559151908601805460ff19169115159190911790559151805192949261042592600485019201906109e4565b3360009081526001602081905260408220015483911080156108d757506108d781336106e8565b151561091b576040805160e560020a62461bcd0281526020600482015260136024820152600080516020610a91833981519152604482015290519081900360640190fd5b50600160a060020a0391821660009081526001602052604090208054600160a060020a03191691909216179055565b336000908152600160208190526040822001548391108015610971575061097181336106e8565b15156109b5576040805160e560020a62461bcd0281526020600482015260136024820152600080516020610a91833981519152604482015290519081900360640190fd5b50600160a060020a03919091166000908152600160205260409020600301805460ff1916911515919091179055565b828054828255906000526020600020908101928215610a39579160200282015b82811115610a395782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190610a04565b50610a45929150610a49565b5090565b610a6d91905b80821115610a45578054600160a060020a0319168155600101610a4f565b9056fe546865206163636f756e742063616e277420706572666f726d20746869732061556e617574686f72697a656420616374696f6e00000000000000000000000000a165627a7a72305820e6affa619ee6a4e72fa55bd2b855766df8d24986d62f21b7de831f48111e5bc70029",
  "sourceMap": "89:4016:19:-;;;465:177;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;497:11:19;:24;;511:10;-1:-1:-1;;;;;;497:24:19;;;;;;;593:42;;;;;;;;;;;610:1;593:42;;;;;;;613:1;593:42;;;;;;-1:-1:-1;532:29:19;593:42;;;;;;;;;;;;-1:-1:-1;;;;;578:11:19;;;572:18;;;;;;;;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;572:63:19;;;;;;;;;;;;;;532:29;;593:42;;572:63;;;;;;;;;:::i;:::-;;;;;465:177;89:4016;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;89:4016:19;-1:-1:-1;;;;;89:4016:19;;;;;;;;;;;-1:-1:-1;89:4016:19;;;;;;;-1:-1:-1;89:4016:19;;;-1:-1:-1;89:4016:19;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;89:4016:19;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "89:4016:19:-;;;;;;;;;-1:-1:-1;;;89:4016:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1217:328;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1217:328:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1217:328:19;-1:-1:-1;;;;;1217:328:19;;;;;3318:583;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3318:583:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3318:583:19;;;;;;;;;;;;;-1:-1:-1;;;;;3318:583:19;;;;;;;;;;;;;;;;;;;;;2697:615;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2697:615:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2697:615:19;-1:-1:-1;;;;;2697:615:19;;;;;;;-1:-1:-1;;;;;2697:615:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2087:236;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2087:236:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2087:236:19;;;;;;;;;3907:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3907:196:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3907:196:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;183:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;183:26:19;;;;;;;;-1:-1:-1;;;;;183:26:19;;;;;;;;;;;;;;2329:182;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2329:182:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2329:182:19;;;;;;;;;1551:322;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1551:322:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1551:322:19;-1:-1:-1;;;;;1551:322:19;;;1879:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1879:202:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1879:202:19;;;;;;;;;;;2517:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2517:174:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2517:174:19;;;;;;;;;;;1217:328;717:10;711:17;;;;737:1;711:17;;;;;;;;:22;;;:27;;690:111;;;;;-1:-1:-1;;;;;690:111:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;690:111:19;;;;-1:-1:-1;;;;;690:111:19;;;;;;;;;;;;;;;1386:42;;;;;;;;-1:-1:-1;1386:42:19;;;1403:1;1386:42;;;;;;;1406:1;1386:42;;;;;;1328:29;1386:42;;;;;;;;;;;;-1:-1:-1;;;;;1368:15:19;;;;;;;;;;;;:60;;;;-1:-1:-1;;;;;;1368:60:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1368:60:19;;;;;;;;;;;;;;1328:29;;1368:15;:60;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;1439:15:19;;;;;1478:4;1439:15;;;;;;;;1464:10;1439:36;;:24;;:36;;;;;:43;;-1:-1:-1;;1439:43:19;;;;;1493:17;;;;;:30;;27:10:-1;;23:18;;;45:23;;1493:45:19;;;;;;;;-1:-1:-1;;;;;;1493:45:19;;;;;;1217:328::o;3318:583::-;-1:-1:-1;;;;;3527:14:19;;3451:11;3527:14;;;:5;:14;;;;;:27;;:34;3451:11;;3527:39;;:103;;-1:-1:-1;;;;;;3582:14:19;;3628:1;3582:14;;;:5;:14;;;;;:27;;:34;;3610:5;;3582:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3582:34:19;:48;3527:103;3510:168;;;-1:-1:-1;3668:1:19;;-1:-1:-1;3668:1:19;3653:25;;3510:168;-1:-1:-1;;;;;3736:14:19;;3689:16;3736:14;;;3773:1;3736:14;;;;;:27;;:34;-1:-1:-1;;3736:38:19;3728:46;;3724:70;;;-1:-1:-1;3790:4:19;3724:70;-1:-1:-1;;;;;3825:14:19;;;;;;:5;:14;;;;;:27;;:34;;3853:5;;3825:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3825:34:19;;-1:-1:-1;3873:11:19;-1:-1:-1;3318:583:19;;;;;;:::o;2697:615::-;-1:-1:-1;;;;;2964:14:19;;2802:23;2964:14;;;:5;:14;;;;;:23;;;2802;;;;;;;;2964;;2960:345;;;-1:-1:-1;;;;;;;;3026:14:19;;;;;;;:5;:14;;;;;;;;:30;;3074:19;;;;3111:25;;;;3154:23;;;;3195:27;;;;:34;3026:30;;;;;-1:-1:-1;3074:19:19;-1:-1:-1;3154:23:19;;;3002:241;;2960:345;-1:-1:-1;3286:1:19;;-1:-1:-1;3286:1:19;;-1:-1:-1;3286:1:19;;-1:-1:-1;3286:1:19;;-1:-1:-1;3286:1:19;2960:345;2697:615;;;;;;;:::o;2087:236::-;1077:10;1096:1;1071:17;;;:5;:17;;;;;;;:22;;2189:7;;-1:-1:-1;1071:76:19;;;;;1113:34;1127:7;1136:10;1113:13;:34::i;:::-;1050:142;;;;;;;-1:-1:-1;;;;;1050:142:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1050:142:19;;;;;;;;;;;;;;;2234:10;2228:17;;;;:5;:17;;;;;;;;:22;;2220:30;;;2212:67;;;;;-1:-1:-1;;;;;2212:67:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2290:14:19;;;;;;;:5;:14;;;;;;;;:19;:26;2087:236::o;3907:196::-;-1:-1:-1;;;;;4061:14:19;;;4034:4;4061:14;;;:5;:14;;;;;;;;:35;;;;;;:23;;;;:35;;;;;;;;3907:196::o;183:26::-;;;-1:-1:-1;;;;;183:26:19;;:::o;2329:182::-;1077:10;1096:1;1071:17;;;:5;:17;;;;;;;:22;;2443:7;;-1:-1:-1;1071:76:19;;;;;1113:34;1127:7;1136:10;1113:13;:34::i;:::-;1050:142;;;;;;;-1:-1:-1;;;;;1050:142:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1050:142:19;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2466:14:19;;;;;;;:5;:14;;;;;:25;;:38;2329:182::o;1551:322::-;894:10;913:1;888:17;;;:5;:17;;;;;;;:22;;:26;867:110;;;;;-1:-1:-1;;;;;867:110:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;867:110:19;;;;-1:-1:-1;;;;;867:110:19;;;;;;;;;;;;;;;1716:42;;;;;;;;-1:-1:-1;1716:42:19;;;;;;;;;;1736:1;1716:42;;;;;;1739:4;1659:29;1716:42;;;;;;;;;;;;-1:-1:-1;;;;;1699:14:19;;;;;;;;;;;;:59;;;;-1:-1:-1;;;;;;1699:59:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1699:59:19;;;;;;;;;;;;;;1659:29;;1699:14;:59;;;;;;;;;:::i;1879:202::-;1077:10;1096:1;1071:17;;;:5;:17;;;;;;;:22;;2003:7;;-1:-1:-1;1071:76:19;;;;;1113:34;1127:7;1136:10;1113:13;:34::i;:::-;1050:142;;;;;;;-1:-1:-1;;;;;1050:142:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1050:142:19;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2026:14:19;;;;;;;:5;:14;;;;;:48;;-1:-1:-1;;;;;;2026:48:19;;;;;;;;1879:202::o;2517:174::-;1077:10;1096:1;1071:17;;;:5;:17;;;;;;;:22;;2627:7;;-1:-1:-1;1071:76:19;;;;;1113:34;1127:7;1136:10;1113:13;:34::i;:::-;1050:142;;;;;;;-1:-1:-1;;;;;1050:142:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1050:142:19;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2650:14:19;;;;;;;;:5;:14;;;;;:23;;:34;;-1:-1:-1;;2650:34:19;;;;;;;;;;2517:174::o;89:4016::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;89:4016:19;-1:-1:-1;;;;;89:4016:19;;;;;;;;;;;-1:-1:-1;89:4016:19;;;;;;;-1:-1:-1;89:4016:19;;;-1:-1:-1;89:4016:19;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;89:4016:19;;;;;;;;;:::o",
  "source": "pragma solidity <0.6.0;\n\nimport \"./libraries/Utils.sol\";\n\n/*\nGas to deploy: 880.108\n*/\n\n\ncontract UserAuthority {\n    string constant private MANAGERS_KEY = \"admitted-managers\";\n\n    address public rootAddress;\n\n    struct User {\n        address contractAddress;\n        uint role;\n        uint reputation;\n        bool validity;\n        address[] managedUsers;\n        mapping(address => bool) managers;\n    }\n    \n    mapping(address => User) private users;\n\n    constructor () public {\n        rootAddress = msg.sender;\n\n        address[] memory tmpAddresses;\n\n        users[rootAddress] = User(address(0), 2, 5, true, tmpAddresses);\n    }\n\n    modifier allowedAdminCreation() {\n        require(\n            users[msg.sender].role >= 1,\n            \"The account can't perform this action\"\n        );\n\n        _;\n    }\n\n    modifier allowedUserCreation() {\n        require(\n            users[msg.sender].role > 0,\n            \"The account can't perform this action\"\n        );\n\n        _;\n    }\n\n    modifier allowedEdit(address userAdr) {\n        require(\n            users[msg.sender].role > 0 &&\n            isUserManager(userAdr, msg.sender),\n            \"Unauthorized action\"\n        );\n\n        _;\n    }\n\n    function createAdmin(\n        address adminAdr\n    )\n        public\n        allowedAdminCreation\n    {\n        address[] memory tmpAddresses;\n\n        users[adminAdr] = User(address(0), 1, 3, true, tmpAddresses);\n\n        users[adminAdr].managers[msg.sender] = true;\n\n        users[msg.sender].managedUsers.push(adminAdr);\n    }\n\n    function createUser(\n        address userAdr\n    )\n        public\n        allowedUserCreation\n    {\n        address[] memory tmpAddresses;\n\n        users[userAdr] = User(address(0), 0, 3, true, tmpAddresses);\n\n        users[userAdr].managers[msg.sender] = true;\n\n        users[msg.sender].managedUsers.push(userAdr);\n    }\n\n    function setUserContract(\n        address userAdr,\n        address contractAddress\n    )\n        public\n        allowedEdit(userAdr)\n    {\n        users[userAdr].contractAddress = contractAddress;\n    }\n\n    function setRole(\n        address userAdr,\n        uint role\n    )\n        public\n        allowedEdit(userAdr)\n    {\n        require(role <= users[msg.sender].role, \"Can't set an higher role\");\n\n        users[userAdr].role = role;\n    }\n\n    function setReputation(\n        address userAdr,\n        uint reputation\n    )\n        public\n        allowedEdit(userAdr)\n    {\n        users[userAdr].reputation = reputation;\n    }\n\n    function setValidity(\n        address userAdr,\n        bool validity\n    )\n        public\n        allowedEdit(userAdr)\n    {\n        users[userAdr].validity = validity;\n    }\n\n    function getUser(\n        address userAdr\n    )\n        public\n        view\n        returns(\n            address contractAddress,\n            uint role,\n            uint reputation,\n            bool validity,\n            uint managedUsers\n        )\n    {\n        if (users[userAdr].validity)\n\n            return(\n                users[userAdr].contractAddress,\n                users[userAdr].role,\n                users[userAdr].reputation,\n                users[userAdr].validity,\n                users[userAdr].managedUsers.length\n            );\n\n        else\n            return(address(0), 0, 0, false, 0);\n    }\n\n    function getManagedUser(\n        address userAdr,\n        uint index\n    )\n        public\n        view\n        returns (\n            address adr,\n            bool more\n        )\n    {\n        if (\n            users[userAdr].managedUsers.length == 0 ||\n            users[userAdr].managedUsers[index] == address(0)\n        )\n            return(address(0), false);\n\n        bool thereIsMore = false;\n\n        if (index < users[userAdr].managedUsers.length - 1) thereIsMore = true;\n\n        return(\n            users[userAdr].managedUsers[index],\n            thereIsMore\n        );\n    }\n\n    function isUserManager(\n        address userAdr,\n        address managerAdr\n    )\n        public\n        view\n        returns (bool)\n    {\n        return users[userAdr].managers[managerAdr];\n    }\n}\n",
  "sourcePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/UserAuthority.sol",
  "ast": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/UserAuthority.sol",
    "exportedSymbols": {
      "UserAuthority": [
        6113
      ]
    },
    "id": 6114,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5696,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:19"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 5697,
        "nodeType": "ImportDirective",
        "scope": 6114,
        "sourceUnit": 7290,
        "src": "25:31:19",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 6113,
        "linearizedBaseContracts": [
          6113
        ],
        "name": "UserAuthority",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 5700,
            "name": "MANAGERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 6113,
            "src": "118:58:19",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 5698,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "118:6:19",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "61646d69747465642d6d616e6167657273",
              "id": 5699,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "157:19:19",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_4f690385eaa185e46f4213a2c4107b3b7ed72ef04aa38d6206669dd5d2d36faf",
                "typeString": "literal_string \"admitted-managers\""
              },
              "value": "admitted-managers"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 5702,
            "name": "rootAddress",
            "nodeType": "VariableDeclaration",
            "scope": 6113,
            "src": "183:26:19",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5701,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "183:7:19",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "UserAuthority.User",
            "id": 5718,
            "members": [
              {
                "constant": false,
                "id": 5704,
                "name": "contractAddress",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "238:23:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5703,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "238:7:19",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5706,
                "name": "role",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "271:9:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5705,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "271:4:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5708,
                "name": "reputation",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "290:15:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5707,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "290:4:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5710,
                "name": "validity",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "315:13:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 5709,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "315:4:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5713,
                "name": "managedUsers",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "338:22:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 5711,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "338:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5712,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "338:9:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5717,
                "name": "managers",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "370:33:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 5716,
                  "keyType": {
                    "id": 5714,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "378:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "370:24:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 5715,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "389:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "User",
            "nodeType": "StructDefinition",
            "scope": 6113,
            "src": "216:194:19",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5722,
            "name": "users",
            "nodeType": "VariableDeclaration",
            "scope": 6113,
            "src": "420:38:19",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
              "typeString": "mapping(address => struct UserAuthority.User)"
            },
            "typeName": {
              "id": 5721,
              "keyType": {
                "id": 5719,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "428:7:19",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "420:24:19",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                "typeString": "mapping(address => struct UserAuthority.User)"
              },
              "valueType": {
                "contractScope": null,
                "id": 5720,
                "name": "User",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 5718,
                "src": "439:4:19",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_User_$5718_storage_ptr",
                  "typeString": "struct UserAuthority.User"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5749,
              "nodeType": "Block",
              "src": "487:155:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5725,
                      "name": "rootAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5702,
                      "src": "497:11:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5726,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "511:3:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 5727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "511:10:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "497:24:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5729,
                  "nodeType": "ExpressionStatement",
                  "src": "497:24:19"
                },
                {
                  "assignments": [
                    5733
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5733,
                      "name": "tmpAddresses",
                      "nodeType": "VariableDeclaration",
                      "scope": 5749,
                      "src": "532:29:19",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5731,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "532:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5732,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "532:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5734,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "532:29:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5735,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5722,
                        "src": "572:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                          "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                        }
                      },
                      "id": 5737,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5736,
                        "name": "rootAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5702,
                        "src": "578:11:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "572:18:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_storage",
                        "typeString": "struct UserAuthority.User storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "606:1:19",
                              "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": 5739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "598:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 5741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "598:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 5742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "610:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "35",
                          "id": 5743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "613:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          "value": "5"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "616:4:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 5745,
                          "name": "tmpAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5733,
                          "src": "622:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        ],
                        "id": 5738,
                        "name": "User",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5718,
                        "src": "593:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_User_$5718_storage_ptr_$",
                          "typeString": "type(struct UserAuthority.User storage pointer)"
                        }
                      },
                      "id": 5746,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "593:42:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_memory",
                        "typeString": "struct UserAuthority.User memory"
                      }
                    },
                    "src": "572:63:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$5718_storage",
                      "typeString": "struct UserAuthority.User storage ref"
                    }
                  },
                  "id": 5748,
                  "nodeType": "ExpressionStatement",
                  "src": "572:63:19"
                }
              ]
            },
            "documentation": null,
            "id": 5750,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5723,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "477:2:19"
            },
            "returnParameters": {
              "id": 5724,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "487:0:19"
            },
            "scope": 6113,
            "src": "465:177:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5764,
              "nodeType": "Block",
              "src": "680:140:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5753,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "711:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 5756,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5754,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7304,
                                "src": "717:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "717:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "711:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 5757,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "role",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5706,
                          "src": "711:22:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 5758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "737:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "711:27:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546865206163636f756e742063616e277420706572666f726d207468697320616374696f6e",
                        "id": 5760,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "752:39:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_25fb48580dfc95813aebbb7998ede3608b3ebb14d4e7e6e6ac1f064fa6085748",
                          "typeString": "literal_string \"The account can't perform this action\""
                        },
                        "value": "The account can't perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_25fb48580dfc95813aebbb7998ede3608b3ebb14d4e7e6e6ac1f064fa6085748",
                          "typeString": "literal_string \"The account can't perform this action\""
                        }
                      ],
                      "id": 5752,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "690:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "690:111:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5762,
                  "nodeType": "ExpressionStatement",
                  "src": "690:111:19"
                },
                {
                  "id": 5763,
                  "nodeType": "PlaceholderStatement",
                  "src": "812:1:19"
                }
              ]
            },
            "documentation": null,
            "id": 5765,
            "name": "allowedAdminCreation",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 5751,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "677:2:19"
            },
            "src": "648:172:19",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5779,
              "nodeType": "Block",
              "src": "857:139:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5774,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5768,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "888:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 5771,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5769,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7304,
                                "src": "894:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "894:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "888:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 5772,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "role",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5706,
                          "src": "888:22:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "913:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "888:26:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546865206163636f756e742063616e277420706572666f726d207468697320616374696f6e",
                        "id": 5775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "928:39:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_25fb48580dfc95813aebbb7998ede3608b3ebb14d4e7e6e6ac1f064fa6085748",
                          "typeString": "literal_string \"The account can't perform this action\""
                        },
                        "value": "The account can't perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_25fb48580dfc95813aebbb7998ede3608b3ebb14d4e7e6e6ac1f064fa6085748",
                          "typeString": "literal_string \"The account can't perform this action\""
                        }
                      ],
                      "id": 5767,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "867:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "867:110:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5777,
                  "nodeType": "ExpressionStatement",
                  "src": "867:110:19"
                },
                {
                  "id": 5778,
                  "nodeType": "PlaceholderStatement",
                  "src": "988:1:19"
                }
              ]
            },
            "documentation": null,
            "id": 5780,
            "name": "allowedUserCreation",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 5766,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "854:2:19"
            },
            "src": "826:170:19",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5802,
              "nodeType": "Block",
              "src": "1040:171:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5797,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5785,
                                "name": "users",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5722,
                                "src": "1071:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                  "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                                }
                              },
                              "id": 5788,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5786,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7304,
                                  "src": "1077:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 5787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1077:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1071:17:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$5718_storage",
                                "typeString": "struct UserAuthority.User storage ref"
                              }
                            },
                            "id": 5789,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "role",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5706,
                            "src": "1071:22:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1096:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1071:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5793,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5782,
                              "src": "1127:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5794,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7304,
                                "src": "1136:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1136:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5792,
                            "name": "isUserManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6112,
                            "src": "1113:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 5796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1113:34:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1071:76:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e617574686f72697a656420616374696f6e",
                        "id": 5798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1161:21:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5f7963829d4f0d80bf608e55714af109863e89950a284b18cdabdc2cfe306d38",
                          "typeString": "literal_string \"Unauthorized action\""
                        },
                        "value": "Unauthorized action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5f7963829d4f0d80bf608e55714af109863e89950a284b18cdabdc2cfe306d38",
                          "typeString": "literal_string \"Unauthorized action\""
                        }
                      ],
                      "id": 5784,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "1050:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1050:142:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5800,
                  "nodeType": "ExpressionStatement",
                  "src": "1050:142:19"
                },
                {
                  "id": 5801,
                  "nodeType": "PlaceholderStatement",
                  "src": "1203:1:19"
                }
              ]
            },
            "documentation": null,
            "id": 5803,
            "name": "allowedEdit",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 5783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5782,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5803,
                  "src": "1023:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5781,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1023:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1022:17:19"
            },
            "src": "1002:209:19",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5848,
              "nodeType": "Block",
              "src": "1318:227:19",
              "statements": [
                {
                  "assignments": [
                    5813
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5813,
                      "name": "tmpAddresses",
                      "nodeType": "VariableDeclaration",
                      "scope": 5848,
                      "src": "1328:29:19",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5811,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1328:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5812,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1328:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5814,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1328:29:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5815,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5722,
                        "src": "1368:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                          "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                        }
                      },
                      "id": 5817,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5816,
                        "name": "adminAdr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5805,
                        "src": "1374:8:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1368:15:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_storage",
                        "typeString": "struct UserAuthority.User storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1399:1:19",
                              "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": 5819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1391:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 5821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1391:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 5822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1403:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 5823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1406:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1409:4:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 5825,
                          "name": "tmpAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5813,
                          "src": "1415:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        ],
                        "id": 5818,
                        "name": "User",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5718,
                        "src": "1386:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_User_$5718_storage_ptr_$",
                          "typeString": "type(struct UserAuthority.User storage pointer)"
                        }
                      },
                      "id": 5826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1386:42:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_memory",
                        "typeString": "struct UserAuthority.User memory"
                      }
                    },
                    "src": "1368:60:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$5718_storage",
                      "typeString": "struct UserAuthority.User storage ref"
                    }
                  },
                  "id": 5828,
                  "nodeType": "ExpressionStatement",
                  "src": "1368:60:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5829,
                            "name": "users",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5722,
                            "src": "1439:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                              "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                            }
                          },
                          "id": 5831,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5830,
                            "name": "adminAdr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5805,
                            "src": "1445:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1439:15:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$5718_storage",
                            "typeString": "struct UserAuthority.User storage ref"
                          }
                        },
                        "id": 5832,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "managers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5717,
                        "src": "1439:24:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 5835,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5833,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7304,
                          "src": "1464:3:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1464:10:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1439:36:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 5836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1478:4:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1439:43:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5838,
                  "nodeType": "ExpressionStatement",
                  "src": "1439:43:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5845,
                        "name": "adminAdr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5805,
                        "src": "1529:8:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5839,
                            "name": "users",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5722,
                            "src": "1493:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                              "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                            }
                          },
                          "id": 5842,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5840,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7304,
                              "src": "1499:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1499:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1493:17:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$5718_storage",
                            "typeString": "struct UserAuthority.User storage ref"
                          }
                        },
                        "id": 5843,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "managedUsers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5713,
                        "src": "1493:30:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 5844,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1493:35:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) returns (uint256)"
                      }
                    },
                    "id": 5846,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1493:45:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5847,
                  "nodeType": "ExpressionStatement",
                  "src": "1493:45:19"
                }
              ]
            },
            "documentation": null,
            "id": 5849,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 5808,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5807,
                  "name": "allowedAdminCreation",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5765,
                  "src": "1293:20:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1293:20:19"
              }
            ],
            "name": "createAdmin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5805,
                  "name": "adminAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5849,
                  "src": "1247:16:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5804,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1247:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1237:32:19"
            },
            "returnParameters": {
              "id": 5809,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1318:0:19"
            },
            "scope": 6113,
            "src": "1217:328:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5894,
              "nodeType": "Block",
              "src": "1649:224:19",
              "statements": [
                {
                  "assignments": [
                    5859
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5859,
                      "name": "tmpAddresses",
                      "nodeType": "VariableDeclaration",
                      "scope": 5894,
                      "src": "1659:29:19",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5857,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1659:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5858,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1659:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5860,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1659:29:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5861,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5722,
                        "src": "1699:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                          "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                        }
                      },
                      "id": 5863,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5862,
                        "name": "userAdr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5851,
                        "src": "1705:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1699:14:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_storage",
                        "typeString": "struct UserAuthority.User storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1729:1:19",
                              "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": 5865,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1721:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 5867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1721:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1733:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 5869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1736:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1739:4:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 5871,
                          "name": "tmpAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5859,
                          "src": "1745:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        ],
                        "id": 5864,
                        "name": "User",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5718,
                        "src": "1716:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_User_$5718_storage_ptr_$",
                          "typeString": "type(struct UserAuthority.User storage pointer)"
                        }
                      },
                      "id": 5872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1716:42:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_memory",
                        "typeString": "struct UserAuthority.User memory"
                      }
                    },
                    "src": "1699:59:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$5718_storage",
                      "typeString": "struct UserAuthority.User storage ref"
                    }
                  },
                  "id": 5874,
                  "nodeType": "ExpressionStatement",
                  "src": "1699:59:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5875,
                            "name": "users",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5722,
                            "src": "1769:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                              "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                            }
                          },
                          "id": 5877,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5876,
                            "name": "userAdr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5851,
                            "src": "1775:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1769:14:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$5718_storage",
                            "typeString": "struct UserAuthority.User storage ref"
                          }
                        },
                        "id": 5878,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "managers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5717,
                        "src": "1769:23:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 5881,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5879,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7304,
                          "src": "1793:3:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5880,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1793:10:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1769:35:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 5882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1807:4:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1769:42:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5884,
                  "nodeType": "ExpressionStatement",
                  "src": "1769:42:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5891,
                        "name": "userAdr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5851,
                        "src": "1858:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5885,
                            "name": "users",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5722,
                            "src": "1822:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                              "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                            }
                          },
                          "id": 5888,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5886,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7304,
                              "src": "1828:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1828:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1822:17:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$5718_storage",
                            "typeString": "struct UserAuthority.User storage ref"
                          }
                        },
                        "id": 5889,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "managedUsers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5713,
                        "src": "1822:30:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 5890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1822:35:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) returns (uint256)"
                      }
                    },
                    "id": 5892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1822:44:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5893,
                  "nodeType": "ExpressionStatement",
                  "src": "1822:44:19"
                }
              ]
            },
            "documentation": null,
            "id": 5895,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 5854,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5853,
                  "name": "allowedUserCreation",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5780,
                  "src": "1625:19:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1625:19:19"
              }
            ],
            "name": "createUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5851,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5895,
                  "src": "1580:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1580:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1570:31:19"
            },
            "returnParameters": {
              "id": 5855,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1649:0:19"
            },
            "scope": 6113,
            "src": "1551:322:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5912,
              "nodeType": "Block",
              "src": "2016:65:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5910,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5905,
                          "name": "users",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "2026:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                            "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                          }
                        },
                        "id": 5907,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5906,
                          "name": "userAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5897,
                          "src": "2032:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2026:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$5718_storage",
                          "typeString": "struct UserAuthority.User storage ref"
                        }
                      },
                      "id": 5908,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5704,
                      "src": "2026:30:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5909,
                      "name": "contractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5899,
                      "src": "2059:15:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2026:48:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5911,
                  "nodeType": "ExpressionStatement",
                  "src": "2026:48:19"
                }
              ]
            },
            "documentation": null,
            "id": 5913,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5902,
                    "name": "userAdr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5897,
                    "src": "2003:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 5903,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5901,
                  "name": "allowedEdit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5803,
                  "src": "1991:11:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1991:20:19"
              }
            ],
            "name": "setUserContract",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5897,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5913,
                  "src": "1913:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1913:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5899,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5913,
                  "src": "1938:23:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5898,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1938:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1903:64:19"
            },
            "returnParameters": {
              "id": 5904,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2016:0:19"
            },
            "scope": 6113,
            "src": "1879:202:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5941,
              "nodeType": "Block",
              "src": "2202:121:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5924,
                          "name": "role",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5917,
                          "src": "2220:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5925,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "2228:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 5928,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5926,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7304,
                                "src": "2234:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2234:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2228:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 5929,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "role",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5706,
                          "src": "2228:22:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2220:30:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616e27742073657420616e2068696768657220726f6c65",
                        "id": 5931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2252:26:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5b083e872ffce952b43a04c5533bff1e1650de911c4527e008d559b43e49a5dd",
                          "typeString": "literal_string \"Can't set an higher role\""
                        },
                        "value": "Can't set an higher role"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5b083e872ffce952b43a04c5533bff1e1650de911c4527e008d559b43e49a5dd",
                          "typeString": "literal_string \"Can't set an higher role\""
                        }
                      ],
                      "id": 5923,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2212:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2212:67:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5933,
                  "nodeType": "ExpressionStatement",
                  "src": "2212:67:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5939,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5934,
                          "name": "users",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "2290:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                            "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                          }
                        },
                        "id": 5936,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5935,
                          "name": "userAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5915,
                          "src": "2296:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2290:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$5718_storage",
                          "typeString": "struct UserAuthority.User storage ref"
                        }
                      },
                      "id": 5937,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5706,
                      "src": "2290:19:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5938,
                      "name": "role",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5917,
                      "src": "2312:4:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2290:26:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5940,
                  "nodeType": "ExpressionStatement",
                  "src": "2290:26:19"
                }
              ]
            },
            "documentation": null,
            "id": 5942,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5920,
                    "name": "userAdr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5915,
                    "src": "2189:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 5921,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5919,
                  "name": "allowedEdit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5803,
                  "src": "2177:11:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2177:20:19"
              }
            ],
            "name": "setRole",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5915,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5942,
                  "src": "2113:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5914,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2113:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5917,
                  "name": "role",
                  "nodeType": "VariableDeclaration",
                  "scope": 5942,
                  "src": "2138:9:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5916,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2138:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2103:50:19"
            },
            "returnParameters": {
              "id": 5922,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2202:0:19"
            },
            "scope": 6113,
            "src": "2087:236:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5959,
              "nodeType": "Block",
              "src": "2456:55:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5952,
                          "name": "users",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "2466:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                            "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                          }
                        },
                        "id": 5954,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5953,
                          "name": "userAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5944,
                          "src": "2472:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2466:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$5718_storage",
                          "typeString": "struct UserAuthority.User storage ref"
                        }
                      },
                      "id": 5955,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "reputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5708,
                      "src": "2466:25:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5956,
                      "name": "reputation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5946,
                      "src": "2494:10:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2466:38:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5958,
                  "nodeType": "ExpressionStatement",
                  "src": "2466:38:19"
                }
              ]
            },
            "documentation": null,
            "id": 5960,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5949,
                    "name": "userAdr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5944,
                    "src": "2443:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 5950,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5948,
                  "name": "allowedEdit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5803,
                  "src": "2431:11:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2431:20:19"
              }
            ],
            "name": "setReputation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5947,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5944,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5960,
                  "src": "2361:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5943,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2361:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5946,
                  "name": "reputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 5960,
                  "src": "2386:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5945,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2386:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2351:56:19"
            },
            "returnParameters": {
              "id": 5951,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2456:0:19"
            },
            "scope": 6113,
            "src": "2329:182:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5977,
              "nodeType": "Block",
              "src": "2640:51:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5970,
                          "name": "users",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "2650:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                            "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                          }
                        },
                        "id": 5972,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5971,
                          "name": "userAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5962,
                          "src": "2656:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2650:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$5718_storage",
                          "typeString": "struct UserAuthority.User storage ref"
                        }
                      },
                      "id": 5973,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "validity",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5710,
                      "src": "2650:23:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5974,
                      "name": "validity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5964,
                      "src": "2676:8:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2650:34:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5976,
                  "nodeType": "ExpressionStatement",
                  "src": "2650:34:19"
                }
              ]
            },
            "documentation": null,
            "id": 5978,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5967,
                    "name": "userAdr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5962,
                    "src": "2627:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 5968,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5966,
                  "name": "allowedEdit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5803,
                  "src": "2615:11:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2615:20:19"
              }
            ],
            "name": "setValidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5965,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5962,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5978,
                  "src": "2547:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5961,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2547:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5964,
                  "name": "validity",
                  "nodeType": "VariableDeclaration",
                  "scope": 5978,
                  "src": "2572:13:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5963,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2572:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2537:54:19"
            },
            "returnParameters": {
              "id": 5969,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2640:0:19"
            },
            "scope": 6113,
            "src": "2517:174:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6030,
              "nodeType": "Block",
              "src": "2950:362:19",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5993,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5722,
                        "src": "2964:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                          "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                        }
                      },
                      "id": 5995,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5994,
                        "name": "userAdr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5980,
                        "src": "2970:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2964:14:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_storage",
                        "typeString": "struct UserAuthority.User storage ref"
                      }
                    },
                    "id": 5996,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "validity",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5710,
                    "src": "2964:23:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3286:1:19",
                              "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": 6020,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3278:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 6022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3278:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3290:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3293:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 6025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3296:5:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3303:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "id": 6027,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "3277:28:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_payable_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_bool_$_t_rational_0_by_1_$",
                        "typeString": "tuple(address payable,int_const 0,int_const 0,bool,int_const 0)"
                      }
                    },
                    "functionReturnParameters": 5992,
                    "id": 6028,
                    "nodeType": "Return",
                    "src": "3271:34:19"
                  },
                  "id": 6029,
                  "nodeType": "IfStatement",
                  "src": "2960:345:19",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5997,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3026:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 5999,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5998,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5980,
                              "src": "3032:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3026:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6000,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "contractAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5704,
                          "src": "3026:30:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6001,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3074:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6003,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6002,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5980,
                              "src": "3080:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3074:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6004,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "role",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5706,
                          "src": "3074:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6005,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3111:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6007,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6006,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5980,
                              "src": "3117:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3111:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6008,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reputation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5708,
                          "src": "3111:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6009,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3154:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6011,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6010,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5980,
                              "src": "3160:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3154:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6012,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "validity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5710,
                          "src": "3154:23:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 6013,
                                "name": "users",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5722,
                                "src": "3195:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                  "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                                }
                              },
                              "id": 6015,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 6014,
                                "name": "userAdr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5980,
                                "src": "3201:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3195:14:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$5718_storage",
                                "typeString": "struct UserAuthority.User storage ref"
                              }
                            },
                            "id": 6016,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "managedUsers",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5713,
                            "src": "3195:27:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 6017,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3195:34:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 6018,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "3008:235:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$",
                        "typeString": "tuple(address,uint256,uint256,bool,uint256)"
                      }
                    },
                    "functionReturnParameters": 5992,
                    "id": 6019,
                    "nodeType": "Return",
                    "src": "3002:241:19"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 6031,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5980,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2723:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5979,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2723:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2713:31:19"
            },
            "returnParameters": {
              "id": 5992,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5983,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2802:23:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5982,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2802:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5985,
                  "name": "role",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2839:9:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5984,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2839:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5987,
                  "name": "reputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2862:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5986,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2862:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5989,
                  "name": "validity",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2891:13:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5988,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2891:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5991,
                  "name": "managedUsers",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2918:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5990,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2918:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2788:157:19"
            },
            "scope": 6113,
            "src": "2697:615:19",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6094,
              "nodeType": "Block",
              "src": "3500:401:19",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 6059,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6048,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6042,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3527:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6044,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6043,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6033,
                              "src": "3533:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3527:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6045,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "managedUsers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5713,
                          "src": "3527:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 6046,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3527:34:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 6047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3565:1:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "3527:39:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 6058,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6049,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3582:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6051,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6050,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6033,
                              "src": "3588:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3582:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6052,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "managedUsers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5713,
                          "src": "3582:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 6054,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6053,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6035,
                          "src": "3610:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3582:34:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3628:1:19",
                            "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": 6055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3620:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 6057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3620:10:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "3582:48:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3527:103:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6066,
                  "nodeType": "IfStatement",
                  "src": "3510:168:19",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3668:1:19",
                              "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": 6060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3660:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 6062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3660:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 6063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3672:5:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        }
                      ],
                      "id": 6064,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "3659:19:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_payable_$_t_bool_$",
                        "typeString": "tuple(address payable,bool)"
                      }
                    },
                    "functionReturnParameters": 6041,
                    "id": 6065,
                    "nodeType": "Return",
                    "src": "3653:25:19"
                  }
                },
                {
                  "assignments": [
                    6068
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6068,
                      "name": "thereIsMore",
                      "nodeType": "VariableDeclaration",
                      "scope": 6094,
                      "src": "3689:16:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6067,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3689:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6070,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 6069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3708:5:19",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3689:24:19"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 6071,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6035,
                      "src": "3728:5:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6072,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3736:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6074,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6073,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6033,
                              "src": "3742:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3736:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6075,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "managedUsers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5713,
                          "src": "3736:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 6076,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3736:34:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 6077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3773:1:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "3736:38:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3728:46:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6084,
                  "nodeType": "IfStatement",
                  "src": "3724:70:19",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 6082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 6080,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6068,
                        "src": "3776:11:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 6081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3790:4:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "3776:18:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 6083,
                    "nodeType": "ExpressionStatement",
                    "src": "3776:18:19"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6085,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3825:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6087,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6086,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6033,
                              "src": "3831:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3825:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6088,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "managedUsers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5713,
                          "src": "3825:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 6090,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6089,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6035,
                          "src": "3853:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3825:34:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6091,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6068,
                        "src": "3873:11:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 6092,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3811:83:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                      "typeString": "tuple(address,bool)"
                    }
                  },
                  "functionReturnParameters": 6041,
                  "id": 6093,
                  "nodeType": "Return",
                  "src": "3805:89:19"
                }
              ]
            },
            "documentation": null,
            "id": 6095,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getManagedUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6033,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 6095,
                  "src": "3351:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6032,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3351:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6035,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 6095,
                  "src": "3376:10:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6034,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3376:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3341:51:19"
            },
            "returnParameters": {
              "id": 6041,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6038,
                  "name": "adr",
                  "nodeType": "VariableDeclaration",
                  "scope": 6095,
                  "src": "3451:11:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6037,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3451:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6040,
                  "name": "more",
                  "nodeType": "VariableDeclaration",
                  "scope": 6095,
                  "src": "3476:9:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6039,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3476:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3437:58:19"
            },
            "scope": 6113,
            "src": "3318:583:19",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6111,
              "nodeType": "Block",
              "src": "4044:59:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6104,
                          "name": "users",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "4061:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                            "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                          }
                        },
                        "id": 6106,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6105,
                          "name": "userAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6097,
                          "src": "4067:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4061:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$5718_storage",
                          "typeString": "struct UserAuthority.User storage ref"
                        }
                      },
                      "id": 6107,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "managers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5717,
                      "src": "4061:23:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 6109,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 6108,
                      "name": "managerAdr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6099,
                      "src": "4085:10:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4061:35:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 6103,
                  "id": 6110,
                  "nodeType": "Return",
                  "src": "4054:42:19"
                }
              ]
            },
            "documentation": null,
            "id": 6112,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isUserManager",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6100,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6097,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 6112,
                  "src": "3939:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6096,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3939:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6099,
                  "name": "managerAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 6112,
                  "src": "3964:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6098,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3964:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3929:59:19"
            },
            "returnParameters": {
              "id": 6103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6102,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6112,
                  "src": "4034:4:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6101,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4034:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4033:6:19"
            },
            "scope": 6113,
            "src": "3907:196:19",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 6114,
        "src": "89:4016:19"
      }
    ],
    "src": "0:4106:19"
  },
  "legacyAST": {
    "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/UserAuthority.sol",
    "exportedSymbols": {
      "UserAuthority": [
        6113
      ]
    },
    "id": 6114,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5696,
        "literals": [
          "solidity",
          "<",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:19"
      },
      {
        "absolutePath": "/home/administrator/workspace/signaturit-solidity-contracts/contracts/libraries/Utils.sol",
        "file": "./libraries/Utils.sol",
        "id": 5697,
        "nodeType": "ImportDirective",
        "scope": 6114,
        "sourceUnit": 7290,
        "src": "25:31:19",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 6113,
        "linearizedBaseContracts": [
          6113
        ],
        "name": "UserAuthority",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 5700,
            "name": "MANAGERS_KEY",
            "nodeType": "VariableDeclaration",
            "scope": 6113,
            "src": "118:58:19",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 5698,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "118:6:19",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "61646d69747465642d6d616e6167657273",
              "id": 5699,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "157:19:19",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_4f690385eaa185e46f4213a2c4107b3b7ed72ef04aa38d6206669dd5d2d36faf",
                "typeString": "literal_string \"admitted-managers\""
              },
              "value": "admitted-managers"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 5702,
            "name": "rootAddress",
            "nodeType": "VariableDeclaration",
            "scope": 6113,
            "src": "183:26:19",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5701,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "183:7:19",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "UserAuthority.User",
            "id": 5718,
            "members": [
              {
                "constant": false,
                "id": 5704,
                "name": "contractAddress",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "238:23:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5703,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "238:7:19",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5706,
                "name": "role",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "271:9:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5705,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "271:4:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5708,
                "name": "reputation",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "290:15:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5707,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "290:4:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5710,
                "name": "validity",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "315:13:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 5709,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "315:4:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5713,
                "name": "managedUsers",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "338:22:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 5711,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "338:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5712,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "338:9:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5717,
                "name": "managers",
                "nodeType": "VariableDeclaration",
                "scope": 5718,
                "src": "370:33:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "typeName": {
                  "id": 5716,
                  "keyType": {
                    "id": 5714,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "378:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "370:24:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "valueType": {
                    "id": 5715,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "389:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "User",
            "nodeType": "StructDefinition",
            "scope": 6113,
            "src": "216:194:19",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5722,
            "name": "users",
            "nodeType": "VariableDeclaration",
            "scope": 6113,
            "src": "420:38:19",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
              "typeString": "mapping(address => struct UserAuthority.User)"
            },
            "typeName": {
              "id": 5721,
              "keyType": {
                "id": 5719,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "428:7:19",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "420:24:19",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                "typeString": "mapping(address => struct UserAuthority.User)"
              },
              "valueType": {
                "contractScope": null,
                "id": 5720,
                "name": "User",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 5718,
                "src": "439:4:19",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_User_$5718_storage_ptr",
                  "typeString": "struct UserAuthority.User"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5749,
              "nodeType": "Block",
              "src": "487:155:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5725,
                      "name": "rootAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5702,
                      "src": "497:11:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5726,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7304,
                        "src": "511:3:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 5727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "511:10:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "497:24:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5729,
                  "nodeType": "ExpressionStatement",
                  "src": "497:24:19"
                },
                {
                  "assignments": [
                    5733
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5733,
                      "name": "tmpAddresses",
                      "nodeType": "VariableDeclaration",
                      "scope": 5749,
                      "src": "532:29:19",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5731,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "532:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5732,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "532:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5734,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "532:29:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5735,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5722,
                        "src": "572:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                          "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                        }
                      },
                      "id": 5737,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5736,
                        "name": "rootAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5702,
                        "src": "578:11:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "572:18:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_storage",
                        "typeString": "struct UserAuthority.User storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "606:1:19",
                              "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": 5739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "598:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 5741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "598:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 5742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "610:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "35",
                          "id": 5743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "613:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          "value": "5"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "616:4:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 5745,
                          "name": "tmpAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5733,
                          "src": "622:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        ],
                        "id": 5738,
                        "name": "User",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5718,
                        "src": "593:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_User_$5718_storage_ptr_$",
                          "typeString": "type(struct UserAuthority.User storage pointer)"
                        }
                      },
                      "id": 5746,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "593:42:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_memory",
                        "typeString": "struct UserAuthority.User memory"
                      }
                    },
                    "src": "572:63:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$5718_storage",
                      "typeString": "struct UserAuthority.User storage ref"
                    }
                  },
                  "id": 5748,
                  "nodeType": "ExpressionStatement",
                  "src": "572:63:19"
                }
              ]
            },
            "documentation": null,
            "id": 5750,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5723,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "477:2:19"
            },
            "returnParameters": {
              "id": 5724,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "487:0:19"
            },
            "scope": 6113,
            "src": "465:177:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5764,
              "nodeType": "Block",
              "src": "680:140:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5753,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "711:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 5756,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5754,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7304,
                                "src": "717:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "717:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "711:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 5757,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "role",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5706,
                          "src": "711:22:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 5758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "737:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "711:27:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546865206163636f756e742063616e277420706572666f726d207468697320616374696f6e",
                        "id": 5760,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "752:39:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_25fb48580dfc95813aebbb7998ede3608b3ebb14d4e7e6e6ac1f064fa6085748",
                          "typeString": "literal_string \"The account can't perform this action\""
                        },
                        "value": "The account can't perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_25fb48580dfc95813aebbb7998ede3608b3ebb14d4e7e6e6ac1f064fa6085748",
                          "typeString": "literal_string \"The account can't perform this action\""
                        }
                      ],
                      "id": 5752,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "690:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "690:111:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5762,
                  "nodeType": "ExpressionStatement",
                  "src": "690:111:19"
                },
                {
                  "id": 5763,
                  "nodeType": "PlaceholderStatement",
                  "src": "812:1:19"
                }
              ]
            },
            "documentation": null,
            "id": 5765,
            "name": "allowedAdminCreation",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 5751,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "677:2:19"
            },
            "src": "648:172:19",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5779,
              "nodeType": "Block",
              "src": "857:139:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5774,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5768,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "888:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 5771,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5769,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7304,
                                "src": "894:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "894:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "888:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 5772,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "role",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5706,
                          "src": "888:22:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "913:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "888:26:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546865206163636f756e742063616e277420706572666f726d207468697320616374696f6e",
                        "id": 5775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "928:39:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_25fb48580dfc95813aebbb7998ede3608b3ebb14d4e7e6e6ac1f064fa6085748",
                          "typeString": "literal_string \"The account can't perform this action\""
                        },
                        "value": "The account can't perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_25fb48580dfc95813aebbb7998ede3608b3ebb14d4e7e6e6ac1f064fa6085748",
                          "typeString": "literal_string \"The account can't perform this action\""
                        }
                      ],
                      "id": 5767,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "867:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "867:110:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5777,
                  "nodeType": "ExpressionStatement",
                  "src": "867:110:19"
                },
                {
                  "id": 5778,
                  "nodeType": "PlaceholderStatement",
                  "src": "988:1:19"
                }
              ]
            },
            "documentation": null,
            "id": 5780,
            "name": "allowedUserCreation",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 5766,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "854:2:19"
            },
            "src": "826:170:19",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5802,
              "nodeType": "Block",
              "src": "1040:171:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5797,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5785,
                                "name": "users",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5722,
                                "src": "1071:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                  "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                                }
                              },
                              "id": 5788,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5786,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7304,
                                  "src": "1077:3:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 5787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1077:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1071:17:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$5718_storage",
                                "typeString": "struct UserAuthority.User storage ref"
                              }
                            },
                            "id": 5789,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "role",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5706,
                            "src": "1071:22:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1096:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1071:26:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5793,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5782,
                              "src": "1127:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5794,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7304,
                                "src": "1136:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1136:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 5792,
                            "name": "isUserManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6112,
                            "src": "1113:13:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 5796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1113:34:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1071:76:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "556e617574686f72697a656420616374696f6e",
                        "id": 5798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1161:21:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5f7963829d4f0d80bf608e55714af109863e89950a284b18cdabdc2cfe306d38",
                          "typeString": "literal_string \"Unauthorized action\""
                        },
                        "value": "Unauthorized action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5f7963829d4f0d80bf608e55714af109863e89950a284b18cdabdc2cfe306d38",
                          "typeString": "literal_string \"Unauthorized action\""
                        }
                      ],
                      "id": 5784,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "1050:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1050:142:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5800,
                  "nodeType": "ExpressionStatement",
                  "src": "1050:142:19"
                },
                {
                  "id": 5801,
                  "nodeType": "PlaceholderStatement",
                  "src": "1203:1:19"
                }
              ]
            },
            "documentation": null,
            "id": 5803,
            "name": "allowedEdit",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 5783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5782,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5803,
                  "src": "1023:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5781,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1023:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1022:17:19"
            },
            "src": "1002:209:19",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5848,
              "nodeType": "Block",
              "src": "1318:227:19",
              "statements": [
                {
                  "assignments": [
                    5813
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5813,
                      "name": "tmpAddresses",
                      "nodeType": "VariableDeclaration",
                      "scope": 5848,
                      "src": "1328:29:19",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5811,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1328:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5812,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1328:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5814,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1328:29:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5815,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5722,
                        "src": "1368:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                          "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                        }
                      },
                      "id": 5817,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5816,
                        "name": "adminAdr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5805,
                        "src": "1374:8:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1368:15:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_storage",
                        "typeString": "struct UserAuthority.User storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1399:1:19",
                              "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": 5819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1391:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 5821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1391:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 5822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1403:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 5823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1406:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1409:4:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 5825,
                          "name": "tmpAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5813,
                          "src": "1415:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        ],
                        "id": 5818,
                        "name": "User",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5718,
                        "src": "1386:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_User_$5718_storage_ptr_$",
                          "typeString": "type(struct UserAuthority.User storage pointer)"
                        }
                      },
                      "id": 5826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1386:42:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_memory",
                        "typeString": "struct UserAuthority.User memory"
                      }
                    },
                    "src": "1368:60:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$5718_storage",
                      "typeString": "struct UserAuthority.User storage ref"
                    }
                  },
                  "id": 5828,
                  "nodeType": "ExpressionStatement",
                  "src": "1368:60:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5829,
                            "name": "users",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5722,
                            "src": "1439:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                              "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                            }
                          },
                          "id": 5831,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5830,
                            "name": "adminAdr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5805,
                            "src": "1445:8:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1439:15:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$5718_storage",
                            "typeString": "struct UserAuthority.User storage ref"
                          }
                        },
                        "id": 5832,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "managers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5717,
                        "src": "1439:24:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 5835,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5833,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7304,
                          "src": "1464:3:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1464:10:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1439:36:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 5836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1478:4:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1439:43:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5838,
                  "nodeType": "ExpressionStatement",
                  "src": "1439:43:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5845,
                        "name": "adminAdr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5805,
                        "src": "1529:8:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5839,
                            "name": "users",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5722,
                            "src": "1493:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                              "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                            }
                          },
                          "id": 5842,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5840,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7304,
                              "src": "1499:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1499:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1493:17:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$5718_storage",
                            "typeString": "struct UserAuthority.User storage ref"
                          }
                        },
                        "id": 5843,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "managedUsers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5713,
                        "src": "1493:30:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 5844,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1493:35:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) returns (uint256)"
                      }
                    },
                    "id": 5846,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1493:45:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5847,
                  "nodeType": "ExpressionStatement",
                  "src": "1493:45:19"
                }
              ]
            },
            "documentation": null,
            "id": 5849,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 5808,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5807,
                  "name": "allowedAdminCreation",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5765,
                  "src": "1293:20:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1293:20:19"
              }
            ],
            "name": "createAdmin",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5805,
                  "name": "adminAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5849,
                  "src": "1247:16:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5804,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1247:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1237:32:19"
            },
            "returnParameters": {
              "id": 5809,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1318:0:19"
            },
            "scope": 6113,
            "src": "1217:328:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5894,
              "nodeType": "Block",
              "src": "1649:224:19",
              "statements": [
                {
                  "assignments": [
                    5859
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5859,
                      "name": "tmpAddresses",
                      "nodeType": "VariableDeclaration",
                      "scope": 5894,
                      "src": "1659:29:19",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5857,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1659:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5858,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1659:9:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5860,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1659:29:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5861,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5722,
                        "src": "1699:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                          "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                        }
                      },
                      "id": 5863,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5862,
                        "name": "userAdr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5851,
                        "src": "1705:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1699:14:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_storage",
                        "typeString": "struct UserAuthority.User storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1729:1:19",
                              "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": 5865,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1721:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 5867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1721:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1733:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 5869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1736:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1739:4:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 5871,
                          "name": "tmpAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5859,
                          "src": "1745:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        ],
                        "id": 5864,
                        "name": "User",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5718,
                        "src": "1716:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_User_$5718_storage_ptr_$",
                          "typeString": "type(struct UserAuthority.User storage pointer)"
                        }
                      },
                      "id": 5872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1716:42:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_memory",
                        "typeString": "struct UserAuthority.User memory"
                      }
                    },
                    "src": "1699:59:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$5718_storage",
                      "typeString": "struct UserAuthority.User storage ref"
                    }
                  },
                  "id": 5874,
                  "nodeType": "ExpressionStatement",
                  "src": "1699:59:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5875,
                            "name": "users",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5722,
                            "src": "1769:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                              "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                            }
                          },
                          "id": 5877,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5876,
                            "name": "userAdr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5851,
                            "src": "1775:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1769:14:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$5718_storage",
                            "typeString": "struct UserAuthority.User storage ref"
                          }
                        },
                        "id": 5878,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "managers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5717,
                        "src": "1769:23:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 5881,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5879,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7304,
                          "src": "1793:3:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5880,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1793:10:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1769:35:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 5882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1807:4:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1769:42:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5884,
                  "nodeType": "ExpressionStatement",
                  "src": "1769:42:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5891,
                        "name": "userAdr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5851,
                        "src": "1858:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5885,
                            "name": "users",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5722,
                            "src": "1822:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                              "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                            }
                          },
                          "id": 5888,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5886,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7304,
                              "src": "1828:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1828:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1822:17:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$5718_storage",
                            "typeString": "struct UserAuthority.User storage ref"
                          }
                        },
                        "id": 5889,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "managedUsers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5713,
                        "src": "1822:30:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 5890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1822:35:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) returns (uint256)"
                      }
                    },
                    "id": 5892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1822:44:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5893,
                  "nodeType": "ExpressionStatement",
                  "src": "1822:44:19"
                }
              ]
            },
            "documentation": null,
            "id": 5895,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 5854,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5853,
                  "name": "allowedUserCreation",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5780,
                  "src": "1625:19:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1625:19:19"
              }
            ],
            "name": "createUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5851,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5895,
                  "src": "1580:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1580:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1570:31:19"
            },
            "returnParameters": {
              "id": 5855,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1649:0:19"
            },
            "scope": 6113,
            "src": "1551:322:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5912,
              "nodeType": "Block",
              "src": "2016:65:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5910,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5905,
                          "name": "users",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "2026:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                            "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                          }
                        },
                        "id": 5907,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5906,
                          "name": "userAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5897,
                          "src": "2032:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2026:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$5718_storage",
                          "typeString": "struct UserAuthority.User storage ref"
                        }
                      },
                      "id": 5908,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5704,
                      "src": "2026:30:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5909,
                      "name": "contractAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5899,
                      "src": "2059:15:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2026:48:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5911,
                  "nodeType": "ExpressionStatement",
                  "src": "2026:48:19"
                }
              ]
            },
            "documentation": null,
            "id": 5913,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5902,
                    "name": "userAdr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5897,
                    "src": "2003:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 5903,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5901,
                  "name": "allowedEdit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5803,
                  "src": "1991:11:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1991:20:19"
              }
            ],
            "name": "setUserContract",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5897,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5913,
                  "src": "1913:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1913:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5899,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5913,
                  "src": "1938:23:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5898,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1938:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1903:64:19"
            },
            "returnParameters": {
              "id": 5904,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2016:0:19"
            },
            "scope": 6113,
            "src": "1879:202:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5941,
              "nodeType": "Block",
              "src": "2202:121:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5924,
                          "name": "role",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5917,
                          "src": "2220:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5925,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "2228:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 5928,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5926,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7304,
                                "src": "2234:3:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2234:10:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2228:17:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 5929,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "role",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5706,
                          "src": "2228:22:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2220:30:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616e27742073657420616e2068696768657220726f6c65",
                        "id": 5931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2252:26:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5b083e872ffce952b43a04c5533bff1e1650de911c4527e008d559b43e49a5dd",
                          "typeString": "literal_string \"Can't set an higher role\""
                        },
                        "value": "Can't set an higher role"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5b083e872ffce952b43a04c5533bff1e1650de911c4527e008d559b43e49a5dd",
                          "typeString": "literal_string \"Can't set an higher role\""
                        }
                      ],
                      "id": 5923,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7307,
                        7308
                      ],
                      "referencedDeclaration": 7308,
                      "src": "2212:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2212:67:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5933,
                  "nodeType": "ExpressionStatement",
                  "src": "2212:67:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5939,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5934,
                          "name": "users",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "2290:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                            "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                          }
                        },
                        "id": 5936,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5935,
                          "name": "userAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5915,
                          "src": "2296:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2290:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$5718_storage",
                          "typeString": "struct UserAuthority.User storage ref"
                        }
                      },
                      "id": 5937,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "role",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5706,
                      "src": "2290:19:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5938,
                      "name": "role",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5917,
                      "src": "2312:4:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2290:26:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5940,
                  "nodeType": "ExpressionStatement",
                  "src": "2290:26:19"
                }
              ]
            },
            "documentation": null,
            "id": 5942,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5920,
                    "name": "userAdr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5915,
                    "src": "2189:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 5921,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5919,
                  "name": "allowedEdit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5803,
                  "src": "2177:11:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2177:20:19"
              }
            ],
            "name": "setRole",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5915,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5942,
                  "src": "2113:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5914,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2113:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5917,
                  "name": "role",
                  "nodeType": "VariableDeclaration",
                  "scope": 5942,
                  "src": "2138:9:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5916,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2138:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2103:50:19"
            },
            "returnParameters": {
              "id": 5922,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2202:0:19"
            },
            "scope": 6113,
            "src": "2087:236:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5959,
              "nodeType": "Block",
              "src": "2456:55:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5952,
                          "name": "users",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "2466:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                            "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                          }
                        },
                        "id": 5954,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5953,
                          "name": "userAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5944,
                          "src": "2472:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2466:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$5718_storage",
                          "typeString": "struct UserAuthority.User storage ref"
                        }
                      },
                      "id": 5955,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "reputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5708,
                      "src": "2466:25:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5956,
                      "name": "reputation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5946,
                      "src": "2494:10:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2466:38:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5958,
                  "nodeType": "ExpressionStatement",
                  "src": "2466:38:19"
                }
              ]
            },
            "documentation": null,
            "id": 5960,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5949,
                    "name": "userAdr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5944,
                    "src": "2443:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 5950,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5948,
                  "name": "allowedEdit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5803,
                  "src": "2431:11:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2431:20:19"
              }
            ],
            "name": "setReputation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5947,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5944,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5960,
                  "src": "2361:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5943,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2361:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5946,
                  "name": "reputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 5960,
                  "src": "2386:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5945,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2386:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2351:56:19"
            },
            "returnParameters": {
              "id": 5951,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2456:0:19"
            },
            "scope": 6113,
            "src": "2329:182:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5977,
              "nodeType": "Block",
              "src": "2640:51:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5970,
                          "name": "users",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "2650:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                            "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                          }
                        },
                        "id": 5972,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5971,
                          "name": "userAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5962,
                          "src": "2656:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2650:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$5718_storage",
                          "typeString": "struct UserAuthority.User storage ref"
                        }
                      },
                      "id": 5973,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "validity",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5710,
                      "src": "2650:23:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5974,
                      "name": "validity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5964,
                      "src": "2676:8:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2650:34:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5976,
                  "nodeType": "ExpressionStatement",
                  "src": "2650:34:19"
                }
              ]
            },
            "documentation": null,
            "id": 5978,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5967,
                    "name": "userAdr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5962,
                    "src": "2627:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 5968,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5966,
                  "name": "allowedEdit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5803,
                  "src": "2615:11:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_address_$",
                    "typeString": "modifier (address)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2615:20:19"
              }
            ],
            "name": "setValidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5965,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5962,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 5978,
                  "src": "2547:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5961,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2547:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5964,
                  "name": "validity",
                  "nodeType": "VariableDeclaration",
                  "scope": 5978,
                  "src": "2572:13:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5963,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2572:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2537:54:19"
            },
            "returnParameters": {
              "id": 5969,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2640:0:19"
            },
            "scope": 6113,
            "src": "2517:174:19",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6030,
              "nodeType": "Block",
              "src": "2950:362:19",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 5993,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5722,
                        "src": "2964:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                          "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                        }
                      },
                      "id": 5995,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5994,
                        "name": "userAdr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5980,
                        "src": "2970:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2964:14:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$5718_storage",
                        "typeString": "struct UserAuthority.User storage ref"
                      }
                    },
                    "id": 5996,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "validity",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 5710,
                    "src": "2964:23:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3286:1:19",
                              "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": 6020,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3278:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 6022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3278:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3290:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3293:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 6025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3296:5:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3303:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "id": 6027,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "3277:28:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_payable_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_bool_$_t_rational_0_by_1_$",
                        "typeString": "tuple(address payable,int_const 0,int_const 0,bool,int_const 0)"
                      }
                    },
                    "functionReturnParameters": 5992,
                    "id": 6028,
                    "nodeType": "Return",
                    "src": "3271:34:19"
                  },
                  "id": 6029,
                  "nodeType": "IfStatement",
                  "src": "2960:345:19",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5997,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3026:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 5999,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5998,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5980,
                              "src": "3032:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3026:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6000,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "contractAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5704,
                          "src": "3026:30:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6001,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3074:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6003,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6002,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5980,
                              "src": "3080:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3074:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6004,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "role",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5706,
                          "src": "3074:19:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6005,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3111:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6007,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6006,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5980,
                              "src": "3117:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3111:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6008,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reputation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5708,
                          "src": "3111:25:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6009,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3154:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6011,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6010,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5980,
                              "src": "3160:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3154:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6012,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "validity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5710,
                          "src": "3154:23:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 6013,
                                "name": "users",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5722,
                                "src": "3195:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                  "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                                }
                              },
                              "id": 6015,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 6014,
                                "name": "userAdr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5980,
                                "src": "3201:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3195:14:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$5718_storage",
                                "typeString": "struct UserAuthority.User storage ref"
                              }
                            },
                            "id": 6016,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "managedUsers",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5713,
                            "src": "3195:27:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 6017,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3195:34:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 6018,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "3008:235:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$",
                        "typeString": "tuple(address,uint256,uint256,bool,uint256)"
                      }
                    },
                    "functionReturnParameters": 5992,
                    "id": 6019,
                    "nodeType": "Return",
                    "src": "3002:241:19"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 6031,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5980,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2723:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5979,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2723:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2713:31:19"
            },
            "returnParameters": {
              "id": 5992,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5983,
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2802:23:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5982,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2802:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5985,
                  "name": "role",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2839:9:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5984,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2839:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5987,
                  "name": "reputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2862:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5986,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2862:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5989,
                  "name": "validity",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2891:13:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5988,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2891:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5991,
                  "name": "managedUsers",
                  "nodeType": "VariableDeclaration",
                  "scope": 6031,
                  "src": "2918:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5990,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2918:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2788:157:19"
            },
            "scope": 6113,
            "src": "2697:615:19",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6094,
              "nodeType": "Block",
              "src": "3500:401:19",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 6059,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6048,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6042,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3527:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6044,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6043,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6033,
                              "src": "3533:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3527:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6045,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "managedUsers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5713,
                          "src": "3527:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 6046,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3527:34:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 6047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3565:1:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "3527:39:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 6058,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6049,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3582:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6051,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6050,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6033,
                              "src": "3588:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3582:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6052,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "managedUsers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5713,
                          "src": "3582:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 6054,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6053,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6035,
                          "src": "3610:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3582:34:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3628:1:19",
                            "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": 6055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3620:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 6057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3620:10:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "3582:48:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3527:103:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6066,
                  "nodeType": "IfStatement",
                  "src": "3510:168:19",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3668:1:19",
                              "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": 6060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3660:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 6062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3660:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 6063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3672:5:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        }
                      ],
                      "id": 6064,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "3659:19:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_payable_$_t_bool_$",
                        "typeString": "tuple(address payable,bool)"
                      }
                    },
                    "functionReturnParameters": 6041,
                    "id": 6065,
                    "nodeType": "Return",
                    "src": "3653:25:19"
                  }
                },
                {
                  "assignments": [
                    6068
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6068,
                      "name": "thereIsMore",
                      "nodeType": "VariableDeclaration",
                      "scope": 6094,
                      "src": "3689:16:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6067,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3689:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6070,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 6069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3708:5:19",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3689:24:19"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 6071,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6035,
                      "src": "3728:5:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 6078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6072,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3736:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6074,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6073,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6033,
                              "src": "3742:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3736:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6075,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "managedUsers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5713,
                          "src": "3736:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 6076,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3736:34:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 6077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3773:1:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "3736:38:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3728:46:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6084,
                  "nodeType": "IfStatement",
                  "src": "3724:70:19",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 6082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 6080,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6068,
                        "src": "3776:11:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 6081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3790:4:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "3776:18:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 6083,
                    "nodeType": "ExpressionStatement",
                    "src": "3776:18:19"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 6085,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5722,
                              "src": "3825:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                                "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                              }
                            },
                            "id": 6087,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 6086,
                              "name": "userAdr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6033,
                              "src": "3831:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3825:14:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$5718_storage",
                              "typeString": "struct UserAuthority.User storage ref"
                            }
                          },
                          "id": 6088,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "managedUsers",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5713,
                          "src": "3825:27:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 6090,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6089,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6035,
                          "src": "3853:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3825:34:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6091,
                        "name": "thereIsMore",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6068,
                        "src": "3873:11:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 6092,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3811:83:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_$_t_bool_$",
                      "typeString": "tuple(address,bool)"
                    }
                  },
                  "functionReturnParameters": 6041,
                  "id": 6093,
                  "nodeType": "Return",
                  "src": "3805:89:19"
                }
              ]
            },
            "documentation": null,
            "id": 6095,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getManagedUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6033,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 6095,
                  "src": "3351:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6032,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3351:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6035,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 6095,
                  "src": "3376:10:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6034,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3376:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3341:51:19"
            },
            "returnParameters": {
              "id": 6041,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6038,
                  "name": "adr",
                  "nodeType": "VariableDeclaration",
                  "scope": 6095,
                  "src": "3451:11:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6037,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3451:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6040,
                  "name": "more",
                  "nodeType": "VariableDeclaration",
                  "scope": 6095,
                  "src": "3476:9:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6039,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3476:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3437:58:19"
            },
            "scope": 6113,
            "src": "3318:583:19",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6111,
              "nodeType": "Block",
              "src": "4044:59:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 6104,
                          "name": "users",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "4061:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$5718_storage_$",
                            "typeString": "mapping(address => struct UserAuthority.User storage ref)"
                          }
                        },
                        "id": 6106,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6105,
                          "name": "userAdr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6097,
                          "src": "4067:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4061:14:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$5718_storage",
                          "typeString": "struct UserAuthority.User storage ref"
                        }
                      },
                      "id": 6107,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "managers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5717,
                      "src": "4061:23:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 6109,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 6108,
                      "name": "managerAdr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6099,
                      "src": "4085:10:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4061:35:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 6103,
                  "id": 6110,
                  "nodeType": "Return",
                  "src": "4054:42:19"
                }
              ]
            },
            "documentation": null,
            "id": 6112,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isUserManager",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6100,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6097,
                  "name": "userAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 6112,
                  "src": "3939:15:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6096,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3939:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6099,
                  "name": "managerAdr",
                  "nodeType": "VariableDeclaration",
                  "scope": 6112,
                  "src": "3964:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6098,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3964:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3929:59:19"
            },
            "returnParameters": {
              "id": 6103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6102,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6112,
                  "src": "4034:4:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6101,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4034:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4033:6:19"
            },
            "scope": 6113,
            "src": "3907:196:19",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 6114,
        "src": "89:4016:19"
      }
    ],
    "src": "0:4106:19"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.3",
  "updatedAt": "2020-01-15T10:55:50.253Z"
}