diff --git a/authorize/evaluator/opa/policy/authz.rego b/authorize/evaluator/opa/policy/authz.rego index 6933c4ac8..37ec42f7f 100644 --- a/authorize/evaluator/opa/policy/authz.rego +++ b/authorize/evaluator/opa/policy/authz.rego @@ -14,6 +14,8 @@ all_allowed_groups := get_allowed_groups(route_policy) all_allowed_users := get_allowed_users(route_policy) all_allowed_idp_claims := get_allowed_idp_claims(route_policy) +is_impersonating := count(input.session.impersonate_email) > 0 + # allow public allow { route_policy.AllowPublicUnauthenticatedAccess == true @@ -35,25 +37,27 @@ allow { # allow by email allow { + not is_impersonating user.email == all_allowed_users[_] - input.session.impersonate_email == "" } # allow group allow { + not is_impersonating some group groups[_] = group all_allowed_groups[_] = group - input.session.impersonate_groups == null } # allow by impersonate email allow { + is_impersonating all_allowed_users[_] = input.session.impersonate_email } # allow by impersonate group allow { + is_impersonating some group input.session.impersonate_groups[_] = group all_allowed_groups[_] = group @@ -61,13 +65,14 @@ allow { # allow by domain allow { + not is_impersonating some domain email_in_domain(user.email, all_allowed_domains[domain]) - input.session.impersonate_email == "" } # allow by impersonate domain allow { + is_impersonating some domain email_in_domain(input.session.impersonate_email, all_allowed_domains[domain]) } diff --git a/authorize/evaluator/opa/policy/authz_test.rego b/authorize/evaluator/opa/policy/authz_test.rego index b3b4eb79a..9a5748314 100644 --- a/authorize/evaluator/opa/policy/authz_test.rego +++ b/authorize/evaluator/opa/policy/authz_test.rego @@ -70,7 +70,7 @@ test_group_allowed { "groups": ["1"] } with input.http as { "url": "http://example.com" } with - input.session as { "id": "session1", "impersonate_groups": null } + input.session as { "id": "session1" } } test_impersonate_groups_not_allowed { @@ -86,12 +86,10 @@ test_impersonate_groups_not_allowed { "user": { "email": "x@example.com" }, - "directory_user": { - "groups": ["1"] - } + "groups": ["1"] } with input.http as { "url": "http://example.com" } with - input.session as { "id": "session1", "impersonate_groups": ["2"] } + input.session as { "id": "session1", "impersonate_email": "y@example.com", "impersonate_groups": ["2"] } } test_impersonate_groups_allowed { @@ -112,7 +110,7 @@ test_impersonate_groups_allowed { } } with input.http as { "url": "http://example.com" } with - input.session as { "id": "session1", "impersonate_groups": ["2"] } + input.session as { "id": "session1", "impersonate_email": "y@example.com", "impersonate_groups": ["2"] } } test_domain_allowed { diff --git a/authorize/evaluator/opa/policy/statik.go b/authorize/evaluator/opa/policy/statik.go index 9aad7978c..49d9e0b2c 100644 --- a/authorize/evaluator/opa/policy/statik.go +++ b/authorize/evaluator/opa/policy/statik.go @@ -9,6 +9,6 @@ import ( const Rego = "rego" // static asset namespace func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00q\x82\x8fQ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00authz.regoUT\x05\x00\x01\x16\xe2\xd8_\xacX]w\x9b8\x13\xbe\x86_1/\xbd\x81\xb7\x84\xb4\xfbq\xb1\xeea\xb39\xbd\xda\x8b\xdd\xf4\xb4\xdb+\x0eU\x05\xc8\xb6\x1a\x90XI\xa4q\xd3\xfe\xf7=\xfa\xc0\x06lH\x9a4\x17\xb1=\x9ay\xe6\x99\xd10\x1a\xd1\xe2\xf2\x1ao\x08\xb4\xbc!\x82vM\x82;\xb5\xfd\xe2\xfb\x15Y\xe3\xaeV\x80\xeb\x9a\x7f\x86\x14\xd6\xb8\x96\xc4\xf7}\xc1;EP\xcbkZ\xee\x10\xadna\x95\xc2\x9a\n\xa9\x90\xd1$\x15\x9aj\x84\x94\xb5\x9dJ\xb6J\xb5I'\xeah\x04\xa1\xcd+\xacp2\x10R\"\xb3)H\xeeK\"%\xe5L\x1bX@mV\x08~M\x042\x08N\xc1\xef$\x11\xf3Zz\xd5\xdf\x08\xde\xb5r^\xc9\xae\xfb>\xae\xeb}X\x15o0e\xc6hC\xd4T\x1c\x0e G#\xc3\x83\xb3\xa1\x9d\x95.\x98i\xa2GVF\xb8`D\xab\x16\x955\xa6\xcd\x91\xe5aeb\xee?s{\xdcvEMK\xdf\xfe\xb8\xf3\xbd\xa1Zr\xa9\xa5o\x8c\xc6{\xa6K\x840EK\xacHuY\x96DJHSP\xa2#\xfe\xb7\x03`\xc9\x85\x84V\x90uM7[5\x03\xfc\xfa\xea\xed;\x0b\xde+\xee\xa1\xbcA\xe14Dmy\xa5\x97\x82\xab7\xff\xfcy\xf5\xf7\xbb\xc0\xf7J\xde1\x15\xf2\xe2\x13)U\xb2!jXi[\x82+\"d\x0c\x81%x\xf6\x9a3%x}\xf6\x96\xfc\xdb\x11\xa9\xce\xfe2\x88A\x0cY\x1eE\xf0;\xbcx(\xde\x95\xa0\x1b\xca\x86\x86\x83\x981\xdb\xc1(=`\n\xae\x8f\x1d\x00\xe08\xaf\x97lw9\xb4y\xaf+\xb8\xcf\x826q\xa5m\x8a\x17\xd1\n\xfe\x97B\x10\x0c\xdd\x16; \x0d\xa6\xf5!\xc9Z512\x8dtTX\x19\xca\xfb\xfc\xf6\xe0\xb4i\x89\x90\x9caE\xd0\xdep\xec\xc6\x14\xed\xc1\x87\xe4\x0dq2\xcf\xd6s\x86rH{\xd1\xf1C0Z\x9e\xf7\xee\x9e\x984\x05\xd6\xd5\xf5$\xce\x81\xe24\xe6SQB\xff\x8c\xcf\x86\xb9\x80\xbf\x10\xef}\xec\xbf#\x13c\xff\xb6\xa1L\x9c:\xa1g\x08#\xca\\\xdb \x0f\xbb\x1c\xc3\x89f\x95\xd9\xcf\x10c\x08\xce\x93\xde\xe4<\x88|\x8fq\x05\x0fR\xc6UCY0\xf2mN?*\xc1,\x1d|\x93\x9a4\x84)\xbdG5\x95*4\xc7\x9c\xd1\x91.\x0e\xb33\xd1\x12\xcb\x19\xbf\x15a;`\x9c\x9d\x19)\xd8sk-x\x03Xw^\xca6\x96\x8cm|\xd2\xd7\xfa\x99 Xr\x96\x9b\xe3\xc0|\x85\x14\xb2_^\xfc\x1cC\xd0G\xa0\xb3`\x1d\xe56%O\x8f\xe1t\x08\x0b\x84~\xfb5\x86\x80\xb2\x1b\\\xd3\n\xca\x9a\x12\xa6\xa0$B\xd1\xb5\xe9\xd4\x9a\x19\x95\xa8\xe0\xbc&\xb8/{*\x91\xd1GV\x1f\x0d\xf4\xdd\xde\xde\xabg\x13+\x88\xea\x04\x93\xa0\xb6\xc4\x8eX\xd0`UnuBM*\xfd\x87\xcc]H\x8f\\\xd0\xcfh\x83\xb9\xed\xce\xf7\x8ed\xab\x142\xfd\xf9\x15\xcc\xe3M\xab\xdb\x18\xec\xf2+\xf7 \xa7\xc75=\xa1\xbd\x82\x11\x93\xa3\xfaq\x03G\x9e\xbd\xc8u|'\x94\xd1P\xef\xce\xf5,-D\xbc\xf8\xa4\xc9\xb5XH\xa2\x05\x83\xd8Lw\x1d$@\xf2N\x94\x03@m\xbb\x07\x9d*\xeb\xe9\x84\xde>T\x19\xab\xed\x03U\x05\xd9\x90Y\xd8i\xf0\xcb\x94\xf5F\x0dF\x12+\x8d!\xb0FA\x0cA\x10\xed\xbb\xf7\x8f\xc6\xb5\x83\x86ge\xa7w\xc2\x0d2V%\x9alZ\xb2\xe5\xd2\x0ctc\x04#>\xce\xc3\xe2n\xcc\xf1\xb5F\x8byx:n\x9f\x07\x85\x85\x92\x9f\xe9\xb4\x0e\x12]\x1a=bb-O\xec\xf3B\x01\xcd\xb2\xc0j\xbb\x1c\xdb\x930]\\=q\xac\xb6\xda\xcdql\xc7\xb1,U\xf8\x9ccc\xb3\x18\xcdSQ]<\x82 \xd3*\xfb\xe24*\xf1\x89\xb8\xcc&\x1djY*\xa1{\xe5\x1d\x04\xb2\xdc\x92\x86\x04+\xb0_b\x08t\xc9\x06+\xd0\x1f}\x0eW`2\xf6M3\xcbP\xbc\xd7\xb5:\x02\x7f\xd6\xcbz\xce3\xfe\x935e\x95\xee\xd6H*A\xd9\x06\xc9\xae0,\x11\x0b}\xcf\xfb\x18^\xac\xc2\xf0b\xa5\xca6{\x9eG\x17\xbaqf2\xbf\x88V\xe7\xe7\xd1E\x98}8\xcf\x9fGa\xf6\xe1\xe2Y\xfe\xff\xe8c\xec{\x9eT\"\x86\x97\x91\xee\xa7\x9e\xdd:`\\4\xb8\xa6_\xec\x93fj\xc3\xd10\x91\x9eXv!\x07\xe7\x81\x99\xea\x94\xd8\xef\xcc\xbc\xb2\xd6r\xca\xfb\x9b\xc8t\x04t\x83\x9e\xfde\xf6\xce\x1c/\xb2\xad\xa9\xea\x17\x83?\x82\xa8\xbfu\xdd\x9a\x92\xf8\xc9\xf7n\xb3\x97\xb9\xfe\xeafK\x0d=9\xf7\xf5\xbf\xd8L\x03\x91\x19\xdb\xf4o;Ok\x99\xb68\xbe2\xf75\x94\xc2\x8d\x1b\xf5dWL\xee\xda)d\xb2M\xc6\xb2\xaf [\xd3\xef\\\x97\xeb\x8a\xc3\xa1\x87\xf2\xdc \xddh\x85;\xd0\xc7\xe6-\xa4\x80\x85\xc0\xbb\xa4\xe4\xac\xc4*4\n\xfa\xcf\x01\x8c\xd0\xe3\xfdj\xd6\xc1W\xe8\xe6\x1d\x8d\xed\xf6\x9e#\x1d\xf6\xb7i\xc4\xfd+\x89\xe3\x98\x1f\xc3\xd4\xa1=\x82k?\xd8/\xb3u/B~\x0cY\x0b\xf6\x08\xae\xfb[\xd9\x12\xd5\xc1;\x94\x19\xba\xa7If\x13\x96\x07\x9c\xfc\x11T\x07\xd6\xd6\xd8\x9e4'n.1\x14\x91cG%\xb2\xbd3\xc4\xd1DPX\x01\xbe1\xef\x8cp\x86\xaf-na\x05\x83\x96[\xc4\x80\xafcs)\x8f\xfc\x1e\xc5\x84\x1c\xe2\x1b\x19\x8d%E/\xc17\xf6\xb6\x9bj\xc4\x0c\xe9\xe1\xef\xbf\x00\x00\x00\xff\xffPK\x07\x08ogu\xb0\x82\x05\x00\x00u\x14\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00 \x93wQ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x00authz_test.regoUT\x05\x00\x01}\xfe\xbb_\xecY[o\xdb6\x14~\xb6~\x05\xc1\xa7fpd$\xed\xf6\x10 X\x82b\x18\xf6\xb0\xa5\xe8\xe5)0\x04Zbm\xae\x92\xa8R\x14j\xc7\xf0\x7f\x1fxHJ\x94-\xc9\xb2\x1a;\x01f=\xb4\x16u\xae\xdfw\x0eo\xc9H\xf8\x8d\xcc)\xcaxB\x05+\x12\x9f\x14r\xf1\xe4y\x92\xe62\xa0 aq@\xe2\x98\xff\xa0\x11Z{#\xf8\x89~0\xb9\xf0F\xa3\x88H\xe2\x0b^H\x1ad\xc2\xcaj\xc0\"\xe5Z\xfd\xbc\xc2jx\xa3=\xab\x81J\x12\xf2Sru\xf7 \xafB\xa8G\xb0\x902\x03\xb7\x08\x17\x02\xd4\xd4\xc8\xcdd\xe2\xea\xa2-%\x13\x9d\xd1\xd3Q\x99\xb1+\xc4\xce\xe4\xb9\x0c\xed\xb73\xe9g\xa8GD\xdaR\xd9\x86\xad\xd6\xb8\x98w\xd3\xd5\\\x0dz\x03\xd0\xbf\x1a\x9c\x0dC\xcf\x14a\xae\x87\xb2\x84\xaa\xdc2\xa2W\x82~)6\xc4P\xaa\xb7d\xa7\xda\xa2\x7fnv\xc7\xdf3\xb3\x06\xa5^I4BR\x9ej\x86\x00\xb2\xa3\xdc\x0c\x87\xa0sz\x00\xd7 \xae\xec\xfa\xbf\xf4D\xa4!\xb1\xd2\x88\xf9hl\xf5O\xae4\xf0\xb8\\=M\xdd\xe4\xf2b\xa6\xd7\xa0\x95\xcai\xa9\xa6\xda9\xadr\x86u\xe6Mu\xdc\xde{\xa5\xd0\xb0B\x15p\xda(\xae\xd5\xc2P\xd9\xb1~\x19\x05\xa9\xda\xb1|\xdda\xe6-\x9e\xa2\xcd\xb8\x87\xf85\x88\xbf\x83\xfbb+\xa9\xef\x03\x14vK5\xd3\xaf\xab\xd8\xb4i\xad\xb1\xf1\xe2\xcc\xd5\xe9*\xa8\x9d\x8baF8\xc2y\x07\x8e0\xf7\xe9\xea\xdeu\xf6E_A\xb7\x9cf\xfeO\xd7\xdc\xcei\xbb\x85\x92\xa3\x1c\x8f\x06\xb0rjL\xfe\x0b\x00\x00\xff\xffPK\x07\x088\xf7w\xee\xf1\x04\x00\x00\xab&\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00q\x82\x8fQogu\xb0\x82\x05\x00\x00u\x14\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x81\x00\x00\x00\x00authz.regoUT\x05\x00\x01\x16\xe2\xd8_PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00 \x93wQ8\xf7w\xee\xf1\x04\x00\x00\xab&\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x81\xc3\x05\x00\x00authz_test.regoUT\x05\x00\x01}\xfe\xbb_PK\x05\x06\x00\x00\x00\x00\x02\x00\x02\x00\x87\x00\x00\x00\xfa\n\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\xb3\x90\x92Q\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00authz.regoUT\x05\x00\x01s\xef\xdc_\xacXMw\x9b8\x17^\xc3\xaf\xb8/\xdd\xc0[B\xda\xf7c1\xee\xf1dr\xba\x9a\xc5Lz\xda\xe9\x8aCU\x01\x8a\xad\x06$F\x12i\xdc\xb4\xff}\xce\x95\x84\x8d\xb1M\xd3\xa4Y\xc4\xf6\xd5s\x1f\xdd/\xae\xae\xe8huCW\x0c:\xd92\xc5\xfb6\xa3\xbdY\x7f \xc3\x9a]\xd3\xbe1@\x9bF~\x86%\\\xd3F\xb30\x0c\x95\xec\x0d#\x9dlx\xb5!\xbc\xbe\x83\xc5\x12\xae\xb9\xd2\x86X$\xab\xc9\x14\x11s\xd1\xf5&[\x1b\xd3e\xbdj\x92=\nT\xaf\xa9\xa1\xd9H\xc8\x99\xce\xa7$E\xa8\x99\xd6\\\nTp\x84\xa8V*y\xc3\x14\xb1\x0c\x1e\x10\xf6\x9a\xa9\xd3(\\\x0dWJ\xf6\x9d>\x0dr\xebaH\x9bf\xebV-[\xca\x85UZ13\x15\xc7c\x83\x93=\xc5\xddfc='\x9dQCC\x0f\xb4\xacpF\x89\xd7\x1d\xa9\x1a\xca\xdb\x03\xcd\xdd\xcaD=\xe4\x9a\xf0\xb6cJKA\x0d\x17+\xd4\xacd/\x8cO\x9c\x8fk\xb6\x031\xc2Z\xca\x9b\x04~\x85\x17a\xf8\xcc\xd7H\xd7\x97\x0d\xafB\xf7\xe3>\x0c\xc6\xdbd\x97(}c\x11\xef\x05\x96\x18\x13\x86W\xd4\xb0\xfa\xb2\xaa\x98\xd6\xb0\\\x82Q=\x0b\xbf\xed\x08+\xa94t\x8a]7|\xb56'\x88__\xbd}\xe7\xc8\x07\xe0\x96*\x18\x15^\xcb\xccZ\xd6\xb8\x14]\xbd\xf9\xeb\xf7\xab?\xdfEa\xe0\xbc\x94\xe5'V\x99l\xc5\xcc\xb8R\xd7\x8c\xd6L\xe9\x14\"g\xe0\xd9k)\x8c\x92\xcd\xd9[\xf6w\xcf\xb49\xfb\xc32F)\xe4E\xe2\"\xf1@\xbe+\xc5W\\\x8c\x15G>S\xb1\x81\xbd\xf0\x80-\xd8\xc1w\x00\x80\xc3\xb8^\x8a\xcd\xe5X\xe7=>\x01C\x14PeH!r\x11^\xc3\xbf\x96\x10E\xe3m\xcb\x0d\xd8\x94\xee\x82,\xa4\x81ie\x84\x01\x12d\x16\x89\xfc\x07\xe5\x9a\x93b\xccjk\xfc{\x94Z\xb6\xcc#\x03\xf7P\xe4\xa4\x80\xe5 :|\x92\xc6\xcb\xfb.\x8c*t\xea\xce\xe1\xbe\xc7\x8c\x87\xa1!\x9c\xac\xf9\x99\x1d'\xde\xce{zz\x9b'\xc6\xc0\xf5\xa3\x07\x05\xddC\x03\xeb\x18\xe1\xc2\xf7\xb2x\x97\xe4\x14\x8et\xc0\xdc}\x16\xc9L,\xa6V\xfc\xa0\x05\xdfI\xc2\x0f\x99EU\xc9\x8d\xa2j\x03\xbc\xee\xc0\xb5\xc0\xbd\xe7\x89*\xe6;\xe3@\x19\x1fo\xa99)\xd2\xed\xa3\xe4D\xb8\xd9\xe3\xb9l\xa0wD\xbbN\xea\xcfb\xe8U\xb3\xb35\xa8\xa40\xf6\xac\xd9?PS\x88\xce\xb3A\xe5\x1d\">W\x8cj)\n{\x1c\xd8\xaf\xb0\x84\xfc\x7f/\xfe\x9bB4x\x80Qp\x1b\x15.$O\xf7\xe1\xb8\x0b3\x06\xfd\xf2\xff\x14\".ni\xc3k\xa8\x1a\xce\x84\x81\x8a)\xc3\xafm\xa7F\xcb\xb8&\xa5\x94\x0d\xa3C\xd9sM,\x9e8<\x19\xe1}n\xbf\x8bs\x81U\xcc\xf4Jh0k\xe6F4h\xa9\xa9\xd6\x18P\x1b\xca\xf0!s\x1b\xc1\x91\x0d\x86\x19o4\xf7\xdd\x87\xc1\x81l\xb1\x84\x1c?\xbf\x82}\xbcy}\x97\x82[~\xe5?\xe1\xf8\xb8\x87\x13\xde+\xd8\xb3\xe4\xa0~\xfc\xc0R\xe4/\xec!s\x04L\xc6\xb8{\xdfdQHd\xf9 \x8d\xeb\xa8\xd2\x0c\x05#\xdfl{\x1d\x05@\xcb^U#B\xd4\xdd\x92N\xc18\x9d\xf0\xbb\x87\x82\xa9Y?\x10\xaa\xd8\x8a\x9d\xa4\x9d:?o2&j4\x928i\n\x91S\x8aR\x88\xa2\xc4\xceE\xd1\xd0\xcb~\"\xaf\x1b4\x02';\x9e ?\xc88H2IZ\xb6\x96\xda\x0et\xfb\x0cV|\x18\x87\xd9l\x9c\xb2\xd7)\xcd\xc6\xe1\xe9\xbcC\x1c\x0cUF\x7f\xe6\xd3:\xc8\xb04\x06\xc6\xcci\x1e\xc9\xf3L\x01\x9d\xb4\x82\x9a\xf5\xbcoO\xe2\xf4~\x0d\x86S\xb3\xc6m\x0e};\xf4e\xae\xc2Omluf\xbdy*\xab\xf7G1b[\xe5P\x9c\x16\x92\x1e\xf1\xcb&iW\xcb\xda(\xec\x95\xf7\x10\xe9j\xcdZ\x16-\xc0}I!\xc2\x92\x8d\x16\x80\x1fC\x0c\x17`#\xf6\x0d-\xcbI\xba\xc5:\x8c\xa2\x9fq\x19\x07=\xbb\x7fv\xcdE\x8d\xdd\x9ah\xa3\xb8X\x11\xdd\x97\xd6J\"\xe20\x08>\xc6\x17\x8b8\xbeX\x98\xaa\xcb\x9f\x17\xc9\x056\xce\\\x17\x17\xc9\xe2\xfc<\xb9\x88\xf3\x0f\xe7\xc5\xf3$\xce?\\<+\xfe\x9d|L\xc3 \xd0F\xa5\xf02\xc1~\x1a\xb8\xd4\x81\x90\xaa\xa5\x0d\xff\xe2\x9e4[\x1b\xde\x0c\xeb\xe9\x91e\xefrt\x1e\xa1\x17\xda\xa8mfN\x83\x11\xe5\xc1\xdb\x9b\xc8t\x04\xf4\x83\x9e\xfbesg\x8f\x17\xdd5\xdc\x0c\x8b\xd1oQ2\xdc\xba\xeelI\xfc'\x0c\xee\xf2\x97\x05~\xf5\xb3%RO\xce}\xfc\x97\xdai \xb1c\x1b\xfev\x035\xcaP\xe3\xf0\xca=\xd4\xd0\x12n\xfd\xa8\xa7\xfbrrW_B\xae\xbbl_\xf6\x15tg\xfb\x9d\xefr}\xb9;\xf4HQX\xa6[\x04\xdc\x03\x1e\x9bw\xb0\x04\xaa\x14\xddd\x95\x14\x155\xb1\x05\xe0\x9f'\xd8cO\xb7\xaby\x0f_\xa1?\xbd\xd1\xbe\xdev\xe7\x04\xdd\xfe6\xf5xx\xa5q\xe8\xf3c,\xf5l\x8f\xb0u\x18\xec\xe7\xad\xf5/R~\x8e\xb1\x8e\xec\x11\xb6n\xafes\xa6\x8e\xde\xc1\x9c0\xf7\xb8\x91\xf9\xc4\xca\x1dO\xf1\x08SG\xdaN\xd9\x9d4Gn.)\x94\x89\xb7\x8ek\xe2zgL\x93\x89\xa0t\x02zk\xdf9\xd1\x9c\xde8\xde\xd2 F-\xb7L\x81\xde\xa4 \xfa\xa6I\xc2\x81\xc5\xba\x1c\xd3[\x9d\xecK\xcaABo\xdduw\x89\x8c\xee\x0d\xc3?\x01\x00\x00\xff\xffPK\x07\x08\x15|p\xc9\x8e\x05\x00\x00\xb5\x14\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\xe3\x90\x92Q\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x00authz_test.regoUT\x05\x00\x01\xcb\xef\xdc_\xecY[o\xdb6\x14~\xb6~\x05\xc1\xa7dsd$\xed\xf6\x10 X\x82b\x18\xf6\xb0\xa5\xe8\xe5)0\x04Zbm\xae\x96\xa8R\x14j\xc7\xf0\x7f\x1fx(J\x94,\xd9\xb4R%\x01j?$\x16u\xae\xdfw\x0eoNI\xf8\x95\xcc)JyL\x05\xcbc\x9f\xe4r\xf1\xe8y\x92f2\xa01a\xcb\x80,\x97\xfc;\x8d\xd0\xc6\x1b\xc1W\xf4\x9d\xc9\x857\x1aED\x12_\xf0\\\xd2 \xe5K\x162\x9a!\x92\xa1\x87\x8d7\x1a\x8dp\xc6s\x11R|\x8d0]\x918]R?\xe41\x1e\xc3\xbb\xc2b\x90gTd\xf8\x1a=\xe0\xd5\xad-5\xf5F\xa3\xed\xd4\xf8aI\x9aK_y\x9b \xfe\x95\x8a@}U\x9e\nG4\xcb\x18O\xf0\xb5~\x1eae5`\x91r\xad\xbe^b5\xbc\xd5\x9e\xd5@% \xf9)\xb9\xba{\x90W!\xd4#XH\x99\x82[\x84s\x01jj\xe4z2\xb1uQC\xa9\x88\xae\xd0\xd3Q\x15c\x97x\x8c0\x8bS*2\x9e\x10I\x832\x1c\x8c\xb6\xde\xb6\xe0`G H\xb8\xb49I\xb8D'^\x9e\x85\x97\xf5m\xdd\xe4\x1e\x92\x9e\xa3i\xd6'r\\\xc8\x99\x0b\x9e\xa7\x03\x12\x02\xf65#\x97/\xcd\xc2\xd8R\xd8\x8dkhj::B\x07\xf2\x0c\xf3\xd6kb\xe2E\x89p\xeb\x91\x86\x94\x15\xe6\x15\x9e\xee\xe7\xf2Y\xba\xe9\xea\x15q\x181AC\xc9\xc5:\xb05\x11Bh\x97\xde\xd74\x0f\xbar\x1c\xf1\x98\xb0d@^\xb5\x03\xed\xfa\xb4l\x1d\xde\xeb\x15\x84\x0c?i\x9e\x889\xd0G\x97\xfbv{/\xd17\x97'~\xf6\xf3\x13\xa5A\xb8$,\xb6\xd7)5U[\xd4\xa0\xe2\xd3M\x10\xb2>\x9dL\xd5\x84\x0ce\x95\x7f@\x115>8\xe31\xf5A\x00X%*\xc5\x19\x9e\xd6\x04\xb7\xe5\x93\xe1\xd8<\xefa\xba\xee\xc5\xa2\x1c5>xOx\xa8%\xc4ft\xa8\x16a\xfd\xe9)\x05al<\xa1,\xecB(\\\x1c5q\xaa\xba.*\xbf\"\xbd%\xe4\xb1\x96I\x89\\(\x89 1#.\xf3j\xd1i}\xfc\xcc\x9a~\xaa\xf3`\xc2yBo\xcb\x9b\x9c\xba\xb3\xe9\xf1\xb4Lf;\x9d\xaa\x9c\xd5\xf8\x00\"J\xf0\xff\xe3\xb4\xeb\x14\xa6\x8f\xc5\x11M\xd8`+Y\x85\xc4\x8c\xcf\x0e\x9e\x8d]\x10\xf8\x81\xf9\xa7\xf9l\xc9\xc2\x01\x16\x8a;e\xe6=X\xff\x9c\x90\\.h\"YH$\x8d\xee\xc2\x90f\n\x10)r\xda\x1f\x01o[\xcb\xa0\x07\x85\xad\xb5\xdeV\xe4\x82~a+]\xe6\xeb\x0bX\x86:\x8b\xbd\x8d\xe2\xae\xb6jq\xe5\x8e\x1a\xacr]\xc8\xe9\xf5\xb2\xbb\x81\x8a,\x14\xf8U%\x14\x0d:@-\xb8\xc1\xd4\xa7\x0e&\xbe {b\x97\x84I\xa5GQ\x0c\x9e\xcd\x01n\xaa\x84H\x14\xb3\xa4\xf0\xb9\xe0\x99lFSc/\xe4\"\x0bT\xa1.\xd9|!_\x86C-\xf8\xee\xfe\xc3G]\xc6&\x1a\x87V\x07\xcd\x98\xca\x05\x87\xe9\xeb\xfe\xfd\xa7\xbf\xef\xff\xfdX\xb8\xee\x06\xcb\xa0CI\xa4\xa3*z\xec^\xb09K J\xb5e\xe0\xfaqj\x9a\x0cZ\xe9\xe2\x1dO\xa4\xe0\xcb\x8b\x0f\xf4[N3y\xf1\x8fq\xff\x80\xff\xfa\xf3\x93ud6e\xd5\xc0\xf8\xd5\x16\xd7+\xc6\xb1\xe8O\"2\x1a\xe4b\xa9\xfc\xa8\x7f\xd77\xa8\x1c;k\x0bPy\x9f\xa8\xcd\xc6\x1f\xdf2|\x0eJ~\x16.hL\xd1\xcd\x8dN \xebQ\xd5)0Vo\x15\xf5J\xe9\xc3\xab\xca\x1cn\xc4$\xc3\xb4;.\x19\xa6\xbf\x1e\x1f\x9b\xd1zb|\xa60tU\xe9\x12*\xdb\xdb\x8c\xb7a\x87\xc7h\xd3Qr\xdb\xf3\xe3\xf5[\x04\xfa\x9a\xc9\xfa\xd8\x99\xfc(C\x87\xedL\xdc\x0c9D\xa4-\x95\xd3D\xa75.\xe6\xfb\xe9j\xaf\x06\xbdAq\xaf\x06kC\xe3\x98\"\xacEP\x96P\x95\x0d#z\xa5rK\xb1%\x86R\xbd#;\xd5\x16\xee\xb9\x99\x13\x89cf-JNI\xb4BR\x9e\xba\xfa\x00\xb2\xa3\xdc\x0e\x87\xa0sz\x04\xd7 \xae\xec\xfa\xbf8\"\xd2\x92Xi\xa4xY\xd8rO\xae4\xf0\xb0Z?N\xed\xe4\xb2|\xa6\xd7\xc8\xb5\xcai\xa5\xa6\xdc9\xadr\x86u\xf0\xac\xba\x0e8x\xe5\xd1\xb2\x82\xe6p\x1a\xca\xaf\xd4\xc2U\xd91~\x19\x05\xa9\xda\xb5\xc1f\x8f\x997x\x8a\xb6c\x07\xf1+\x10\x7f\x0b\xf7\xd9FR\xdfW(\xecVj\xa6\xdfT\xb1i\xd3Zc\xeby\xdeh\xdd\x84\xa28\xb9\xf7\x02\xc3>\xf5G\xe02\xea\x07G\x8b\xa1\xfd\x80\xd4\x14 \xcd\xa8\x0b\x92\xb5\x86\xa4\x8cO\x1b\xd7\x1a\x00\xc9c\x13\x12\xfd\xbbA/D\xac\x9f\x1c\xe6\xe0p\xde\x0f\x90];\xfb\xf1\xb0\xe5!\xc5y\x17\x1c\x8f\x1a\x8e2:m[kT{)\"h\xc7\xad\xe2\xce\x8b\xb3\x0d&\xe6\xf7\xa0\xad\xea\xca\xea\xe9\x1cT\xa0\x9f\xbb\xd5\xaeZ\xd4\x0e\xbb\x1a#\x0c\xb1\xbf\xe9pzD\x9c\xb6)\xa7\x88\xdf*\xe9\xdf\xd4\x9f\xdf\x8f\x8b\xdd\x9f\xf9\xa1\x91T\x05\xe8S\xffK\x0d\x83\xfa\x885W'\xeb\xa0vn\x87\x19a\x80\xf3\x18\x1c\xb1\xee\x92\xf5\x9d\xed\xec\xb3\xbe\"\xef8m\xfdL\xd7\xf0\xd6m@\x07%\x83\x1c\xdfz\xb0\xf2\xdc\x98\xfc\x1f\x00\x00\xff\xffPK\x07\x08\xa7\x1fC\x08\x03\x05\x00\x00['\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xb3\x90\x92Q\x15|p\xc9\x8e\x05\x00\x00\xb5\x14\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x81\x00\x00\x00\x00authz.regoUT\x05\x00\x01s\xef\xdc_PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\xe3\x90\x92Q\xa7\x1fC\x08\x03\x05\x00\x00['\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x81\xcf\x05\x00\x00authz_test.regoUT\x05\x00\x01\xcb\xef\xdc_PK\x05\x06\x00\x00\x00\x00\x02\x00\x02\x00\x87\x00\x00\x00\x18\x0b\x00\x00\x00\x00" fs.RegisterWithNamespace("rego", data) }